From: Jakub Ślepecki Date: Fri, 20 Jun 2025 15:59:07 +0000 (+0200) Subject: libkmod: unref list before returning with error X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bf69a3575d224ace9418b8e26eb6d26a09503327;p=thirdparty%2Fkmod.git libkmod: unref list before returning with error In case of error path this might have led to, for example: ==86629==ERROR: LeakSanitizer: detected memory leaks Direct leak of 24 byte(s) in 1 object(s) allocated from: #0 0x7fa904b20e15 (/usr/lib/gcc/x86_64-pc-linux-gnu/15.1.1/../../../../lib/libasan.so+0x120e15) (BuildId: 9dccfc42ea2d9790ff7cf76cc8a3210650e604e0) #1 0x55d74820fc8a ($kmod/build/kmod+0xefc8a) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #2 0x55d7482173a6 ($kmod/build/kmod+0xf73a6) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #3 0x55d74821a617 ($kmod/build/kmod+0xfa617) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #4 0x55d7481e2d80 ($kmod/build/kmod+0xc2d80) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #5 0x55d7481e314f ($kmod/build/kmod+0xc314f) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #6 0x55d7481e658c ($kmod/build/kmod+0xc658c) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #7 0x7fa9038376b4 (/usr/lib/libc.so.6+0x276b4) (BuildId: 468e3585c794491a48ea75fceb9e4d6b1464fc35) #8 0x7fa903837768 (/usr/lib/libc.so.6+0x27768) (BuildId: 468e3585c794491a48ea75fceb9e4d6b1464fc35) #9 0x55d7481c3334 ($kmod/build/kmod+0xa3334) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) Indirect leak of 4120 byte(s) in 1 object(s) allocated from: #0 0x7fa904b2073d (/usr/lib/gcc/x86_64-pc-linux-gnu/15.1.1/../../../../lib/libasan.so+0x12073d) (BuildId: 9dccfc42ea2d9790ff7cf76cc8a3210650e604e0) #1 0x55d7481eb8eb ($kmod/build/kmod+0xcb8eb) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #2 0x55d7481f6fee ($kmod/build/kmod+0xd6fee) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #3 0x55d7481e52c4 ($kmod/build/kmod+0xc52c4) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) #4 0x7fa9038376b4 (/usr/lib/libc.so.6+0x276b4) (BuildId: 468e3585c794491a48ea75fceb9e4d6b1464fc35) #5 0x7fa903837768 (/usr/lib/libc.so.6+0x27768) (BuildId: 468e3585c794491a48ea75fceb9e4d6b1464fc35) #6 0x55d7481c3334 ($kmod/build/kmod+0xa3334) (BuildId: e7c136c95271cf020398e33fd5577d82adc7a47c) [...] SUMMARY: AddressSanitizer: 5701 byte(s) leaked in 27 allocation(s). Co-authored-by: Dawid Osuchowski Signed-off-by: Dawid Osuchowski Signed-off-by: Jakub Ślepecki Link: https://github.com/kmod-project/kmod/pull/312 Signed-off-by: Lucas De Marchi --- diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index 4f8fcaf6..4d8ca950 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -1043,10 +1043,10 @@ KMOD_EXPORT int kmod_module_probe_insert_module( err = kmod_module_apply_filter(mod->ctx, KMOD_FILTER_BLACKLIST, list, &filtered); + kmod_module_unref_list(list); if (err < 0) return err; - kmod_module_unref_list(list); if (filtered == NULL) return KMOD_PROBE_APPLY_BLACKLIST_ALL;