From: Nanyong Sun <sunnanyong@huawei.com> To: <konishi.ryusuke@gmail.com> Cc: <linux-nilfs@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <sunnanyong@huawei.com>, <wangkefeng.wang@huawei.com> Subject: [PATCH 2/6] nilfs2: fix NULL pointer in nilfs_##name##_attr_release Date: Tue, 29 Jun 2021 10:25:52 +0800 [thread overview] Message-ID: <20210629022556.3985106-3-sunnanyong@huawei.com> (raw) In-Reply-To: <20210629022556.3985106-1-sunnanyong@huawei.com> In nilfs_##name##_attr_release, kobj->parent should not be referenced because it is a NULL pointer. The release() method of kobject is always called in kobject_put(kobj), in the implementation of kobject_put(), the kobj->parent will be assigned as NULL before call the release() method. So just use kobj to get the subgroups, which is more efficient and can fix a NULL pointer reference problem. Signed-off-by: Nanyong Sun <sunnanyong@huawei.com> --- fs/nilfs2/sysfs.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/fs/nilfs2/sysfs.c b/fs/nilfs2/sysfs.c index d2d8ea89937a..ec85ac53720d 100644 --- a/fs/nilfs2/sysfs.c +++ b/fs/nilfs2/sysfs.c @@ -51,11 +51,9 @@ static const struct sysfs_ops nilfs_##name##_attr_ops = { \ #define NILFS_DEV_INT_GROUP_TYPE(name, parent_name) \ static void nilfs_##name##_attr_release(struct kobject *kobj) \ { \ - struct nilfs_sysfs_##parent_name##_subgroups *subgroups; \ - struct the_nilfs *nilfs = container_of(kobj->parent, \ - struct the_nilfs, \ - ns_##parent_name##_kobj); \ - subgroups = nilfs->ns_##parent_name##_subgroups; \ + struct nilfs_sysfs_##parent_name##_subgroups *subgroups = container_of(kobj, \ + struct nilfs_sysfs_##parent_name##_subgroups, \ + sg_##name##_kobj); \ complete(&subgroups->sg_##name##_kobj_unregister); \ } \ static struct kobj_type nilfs_##name##_ktype = { \ -- 2.18.0.huawei.25
WARNING: multiple messages have this Message-ID (diff)
From: Nanyong Sun <sunnanyong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> To: konishi.ryusuke-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sunnanyong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org, wangkefeng.wang-hv44wF8Li93QT0dZR+AlfA@public.gmane.org Subject: [PATCH 2/6] nilfs2: fix NULL pointer in nilfs_##name##_attr_release Date: Tue, 29 Jun 2021 10:25:52 +0800 [thread overview] Message-ID: <20210629022556.3985106-3-sunnanyong@huawei.com> (raw) In-Reply-To: <20210629022556.3985106-1-sunnanyong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> In nilfs_##name##_attr_release, kobj->parent should not be referenced because it is a NULL pointer. The release() method of kobject is always called in kobject_put(kobj), in the implementation of kobject_put(), the kobj->parent will be assigned as NULL before call the release() method. So just use kobj to get the subgroups, which is more efficient and can fix a NULL pointer reference problem. Signed-off-by: Nanyong Sun <sunnanyong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> --- fs/nilfs2/sysfs.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/fs/nilfs2/sysfs.c b/fs/nilfs2/sysfs.c index d2d8ea89937a..ec85ac53720d 100644 --- a/fs/nilfs2/sysfs.c +++ b/fs/nilfs2/sysfs.c @@ -51,11 +51,9 @@ static const struct sysfs_ops nilfs_##name##_attr_ops = { \ #define NILFS_DEV_INT_GROUP_TYPE(name, parent_name) \ static void nilfs_##name##_attr_release(struct kobject *kobj) \ { \ - struct nilfs_sysfs_##parent_name##_subgroups *subgroups; \ - struct the_nilfs *nilfs = container_of(kobj->parent, \ - struct the_nilfs, \ - ns_##parent_name##_kobj); \ - subgroups = nilfs->ns_##parent_name##_subgroups; \ + struct nilfs_sysfs_##parent_name##_subgroups *subgroups = container_of(kobj, \ + struct nilfs_sysfs_##parent_name##_subgroups, \ + sg_##name##_kobj); \ complete(&subgroups->sg_##name##_kobj_unregister); \ } \ static struct kobj_type nilfs_##name##_ktype = { \ -- 2.18.0.huawei.25
next prev parent reply other threads:[~2021-06-29 1:54 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-29 2:25 [PATCH 0/6] nilfs2: fix incorrect usage of kobject Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun 2021-06-29 2:25 ` [PATCH 1/6] nilfs2: fix memory leak in nilfs_sysfs_create_device_group Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun [this message] 2021-06-29 2:25 ` [PATCH 2/6] nilfs2: fix NULL pointer in nilfs_##name##_attr_release Nanyong Sun 2021-06-29 2:25 ` [PATCH 3/6] nilfs2: fix memory leak in nilfs_sysfs_create_##name##_group Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun 2021-06-29 2:25 ` [PATCH 4/6] nilfs2: fix memory leak in nilfs_sysfs_delete_##name##_group Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun 2021-06-29 2:25 ` [PATCH 5/6] nilfs2: fix memory leak in nilfs_sysfs_create_snapshot_group Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun 2021-06-29 2:25 ` [PATCH 6/6] nilfs2: fix memory leak in nilfs_sysfs_delete_snapshot_group Nanyong Sun 2021-06-29 2:25 ` Nanyong Sun 2021-07-01 13:00 ` [PATCH 0/6] nilfs2: fix incorrect usage of kobject Ryusuke Konishi 2021-07-01 13:00 ` Ryusuke Konishi 2021-07-07 9:48 Ryusuke Konishi 2021-07-07 9:48 ` [PATCH 2/6] nilfs2: fix NULL pointer in nilfs_##name##_attr_release Ryusuke Konishi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210629022556.3985106-3-sunnanyong@huawei.com \ --to=sunnanyong@huawei.com \ --cc=konishi.ryusuke@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nilfs@vger.kernel.org \ --cc=wangkefeng.wang@huawei.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.