From d39ed70c659238ad2307868f3e9cc32ff8f7489b Mon Sep 17 00:00:00 2001 From: dong-yiqun Date: Thu, 9 Sep 2021 10:23:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A7=A3=E5=86=B3disk=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=9C=AA=E9=87=8A=E6=94=BE=E5=AF=BC=E8=87=B4=E7=9A=84=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=B3=84=E9=9C=B2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主干存在该问题,还未解决. 因为对于热插入的sd卡,如果被其中一个线程操作拿住锁资源, 热插拔会导致disk资源状态未修改为UNUSED,造成资源泄露 现在修改为在拔出sd卡时,销毁disk锁资源之前,先将disk状态修改成UNUSED Close #I3ZOIO Signed-off-by: dong-yiqun --- fs/vfs/disk/disk.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/vfs/disk/disk.c b/fs/vfs/disk/disk.c index 89a1bb5d..f21bf7af 100755 --- a/fs/vfs/disk/disk.c +++ b/fs/vfs/disk/disk.c @@ -1279,20 +1279,20 @@ static INT32 DiskDeinit(los_disk *disk) #endif disk->dev = NULL; - DISK_UNLOCK(&disk->disk_mutex); + (VOID)unregister_blockdriver(disk->disk_name); if (disk->disk_name != NULL) { LOS_MemFree(m_aucSysMem0, disk->disk_name); disk->disk_name = NULL; } + DISK_UNLOCK(&disk->disk_mutex); + disk->disk_status = STAT_UNUSED; ret = pthread_mutex_destroy(&disk->disk_mutex); if (ret != 0) { PRINT_ERR("%s %d, mutex destroy failed, ret = %d\n", __FUNCTION__, __LINE__, ret); return -EFAULT; } - disk->disk_status = STAT_UNUSED; - return ENOERR; }