From 7bdb0328052f14152b7a0864e7fc2ae846542edf Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Fri, 11 Mar 2022 21:36:10 +0800 Subject: fix msc buffer alloc when memset usbd_msc_cfg --- class/msc/usbd_msc.c | 10 ++++++++-- 1 file 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; } /** -- cgit v1.3.1