usbdev:fix usbdev usbdev_fs_classuninitialize double free
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
This commit is contained in:
parent
a8d7103a2b
commit
ff4c6c33e8
@ -83,6 +83,7 @@ struct usbdev_fs_dev_s
|
||||
uint8_t config;
|
||||
struct usbdev_devinfo_s devinfo;
|
||||
FAR struct usbdev_fs_ep_s *eps;
|
||||
bool uninitialized;
|
||||
};
|
||||
|
||||
struct usbdev_fs_driver_s
|
||||
@ -528,7 +529,7 @@ static int usbdev_fs_close(FAR struct file *filep)
|
||||
}
|
||||
}
|
||||
|
||||
if (do_free)
|
||||
if (do_free && fs->uninitialized)
|
||||
{
|
||||
FAR struct usbdev_fs_driver_s *alloc = container_of(
|
||||
fs, FAR struct usbdev_fs_driver_s, dev);
|
||||
@ -1409,6 +1410,7 @@ void usbdev_fs_classuninitialize(FAR struct usbdevclass_driver_s *classdev)
|
||||
FAR struct usbdev_fs_dev_s *fs = &alloc->dev;
|
||||
int i;
|
||||
|
||||
fs->uninitialized = true;
|
||||
for (i = 0; i < fs->devinfo.nendpoints; i++)
|
||||
{
|
||||
if (fs->eps != NULL && fs->eps[i].crefs > 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user