From: Yang Yingliang Date: Thu, 10 Nov 2022 10:23:07 +0000 (+0800) Subject: drivers: base: transport_class: fix possible memory leak X-Git-Tag: v6.6.7~3434^2~89 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a86367803838b369fe5486ac18771d14723c258c;p=platform%2Fkernel%2Flinux-starfive.git drivers: base: transport_class: fix possible memory leak Current some drivers(like iscsi) call transport_register_device() failed, they don't call transport_destroy_device() to release the memory allocated in transport_setup_device(), because they don't know what was done, it should be internal thing to release the resource in register function. So fix this leak by calling destroy function inside register function. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Yang Yingliang Link: https://lore.kernel.org/r/20221110102307.3492557-1-yangyingliang@huawei.com Signed-off-by: Greg Kroah-Hartman --- diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h index 63076fb..2efc271a 100644 --- a/include/linux/transport_class.h +++ b/include/linux/transport_class.h @@ -70,8 +70,14 @@ void transport_destroy_device(struct device *); static inline int transport_register_device(struct device *dev) { + int ret; + transport_setup_device(dev); - return transport_add_device(dev); + ret = transport_add_device(dev); + if (ret) + transport_destroy_device(dev); + + return ret; } static inline void