All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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: link
Be 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.