diff options
| author | sakumisu <[email protected]> | 2022-03-11 21:36:10 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2022-03-11 21:36:10 +0800 |
| commit | 7bdb0328052f14152b7a0864e7fc2ae846542edf (patch) | |
| tree | 6ac7bdec85462492507e9368be23c730f6e00d43 | |
| parent | ceac053bdbaf4116b83d46888768df7ffd0f61d9 (diff) | |
fix msc buffer alloc when memset usbd_msc_cfg
| -rw-r--r-- | class/msc/usbd_msc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/class/msc/usbd_msc.c b/class/msc/usbd_msc.c index 0da261d7..a92747f9 100644 --- a/class/msc/usbd_msc.c +++ b/class/msc/usbd_msc.c @@ -71,12 +71,18 @@ static bool memOK; static void usbd_msc_reset(void) { - memset((uint8_t *)&usbd_msc_cfg, 0, sizeof(struct usbd_msc_cfg_priv)); - usbd_msc_get_cap(0, &usbd_msc_cfg.scsi_blk_nbr, &usbd_msc_cfg.scsi_blk_size); + uint8_t *buf = NULL; if (usbd_msc_cfg.block_buffer == NULL) { usbd_msc_cfg.block_buffer = usb_iomalloc(usbd_msc_cfg.scsi_blk_size * sizeof(uint8_t)); } + + buf = usbd_msc_cfg.block_buffer; + + memset((uint8_t *)&usbd_msc_cfg, 0, sizeof(struct usbd_msc_cfg_priv)); + usbd_msc_get_cap(0, &usbd_msc_cfg.scsi_blk_nbr, &usbd_msc_cfg.scsi_blk_size); + + usbd_msc_cfg.block_buffer = buf; } /** |
