From 0a694a179ebb5c5694dc57d1246d105c46733b07 Mon Sep 17 00:00:00 2001 From: Far Date: Thu, 18 Nov 2021 11:47:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Djffs2=E6=9C=AA?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=94=81=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fs/jffs2/compr_zlib.c中两个互斥锁deflate_mutex和inflate_mutex未初始化,导致未能有效保护临界区 Close #I4FH9M Signed-off-by: Far --- fs/jffs2/compr_zlib.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/fs/jffs2/compr_zlib.c b/fs/jffs2/compr_zlib.c index 87ff964..2a38a6b 100644 --- a/fs/jffs2/compr_zlib.c +++ b/fs/jffs2/compr_zlib.c @@ -168,13 +168,30 @@ int __init jffs2_zlib_init(void) { int ret; + ret = pthread_mutex_init(&inflate_mutex, NULL); + if (ret) { + return ret; + } + + ret = pthread_mutex_init(&deflate_mutex, NULL); + if (ret) { + pthread_mutex_destroy(&inflate_mutex); + return ret; + } + ret = alloc_workspaces(); - if (ret) - return ret; + if (ret) { + pthread_mutex_destroy(&inflate_mutex); + pthread_mutex_destroy(&deflate_mutex); + return ret; + } ret = jffs2_register_compressor(&jffs2_zlib_comp); - if (ret) - free_workspaces(); + if (ret) { + pthread_mutex_destroy(&inflate_mutex); + pthread_mutex_destroy(&deflate_mutex); + free_workspaces(); + } return ret; } @@ -183,4 +200,6 @@ void jffs2_zlib_exit(void) { jffs2_unregister_compressor(&jffs2_zlib_comp); free_workspaces(); + pthread_mutex_destroy(&inflate_mutex); + pthread_mutex_destroy(&deflate_mutex); } -- Gitee