Explorar o código

mstorage.c: fix the issue that _read_capacity() returns the wrong last valid address of storage medium

hphuang %!s(int64=5) %!d(string=hai) anos
pai
achega
9d374f873c
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      components/drivers/usb/usbdevice/class/mstorage.c

+ 1 - 1
components/drivers/usb/usbdevice/class/mstorage.c

@@ -426,7 +426,7 @@ static rt_size_t _read_capacity(ufunction_t func, ustorage_cbw_t cbw)
 
     data = (struct mstorage*)func->user_data;   
     buf = data->ep_in->buffer;    
-    sector_count = data->geometry.sector_count;
+    sector_count = data->geometry.sector_count - 1; /* Last Logical Block Address */
     sector_size = data->geometry.bytes_per_sector;
 
     buf[0] = sector_count >> 24;