summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-03-11 21:36:10 +0800
committersakumisu <[email protected]>2022-03-11 21:36:10 +0800
commit7bdb0328052f14152b7a0864e7fc2ae846542edf (patch)
tree6ac7bdec85462492507e9368be23c730f6e00d43
parentceac053bdbaf4116b83d46888768df7ffd0f61d9 (diff)
fix msc buffer alloc when memset usbd_msc_cfg
-rw-r--r--class/msc/usbd_msc.c10
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;
}
/**