From: Jens Axboe <jens.axboe@oracle.com>
To: Zdenek Kabelac <zdenek.kabelac@gmail.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
mbroz@redhat.com, tytso@mit.edu, mingo@elte.hu
Subject: Re: [PATCH] Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs
Date: Fri, 25 Sep 2009 06:16:33 +0200 [thread overview]
Message-ID: <20090925041633.GQ23126@kernel.dk> (raw)
In-Reply-To: <c4e36d110909240326k16bf40cdpfa4b818d1a24a25f@mail.gmail.com>
On Thu, Sep 24 2009, Zdenek Kabelac wrote:
> 2009/9/24 Li Zefan <lizf@cn.fujitsu.com>:
> >>>> Subject: [PATCH] Add missing blk_trace_remove_sysfs to be in pair with
> >>>> blk_trace_init_sysfs
> >>>> From: Zdenek Kabelac <zkabelac@redhat.com>
> >>>>
> >>>> Adds missing blk_trace_remove_sysfs() to be in pair with
> >>>> blk_trace_init_sysfs() introduced in commit
> >>>> 1d54ad6da9192fed5dd3b60224d9f2dfea0dcd82.
> >>>>
> >>>> Problem was noticed via kmemleak backtrace when some sysfs entries
> >>>> were note properly destroyed during device removal:
> >>>>
> >>> Thanks for reporting and fixing this!
> >>>
> >>>> @@ -465,6 +466,7 @@ void blk_unregister_queue(struct gendisk *disk)
> >>>>
> >>>> kobject_uevent(&q->kobj, KOBJ_REMOVE);
> >>>> kobject_del(&q->kobj);
> >>>> + blk_trace_remove_sysfs(disk_to_dev(disk));
> >>> This should be moved outside of 'if'.
> >>>
> >>
> >> I was not really sure about the proper place - if it could be placed
> >> before if() or after the if(){} - as I've not checked in depth
> >
> > Just use the reverse order against blk_register_queue() should be fine.
>
> Yes - I think the order of release is correct.
>
> >
> >> connection between kobj and sysfs. It's somewhat unclear why all the
> >> kobject operation are only within this if(){} block - so I've thought
> >> there is some reason...
> >> IMHO only elv_unregister_queue() should be probably in the if(){} block.
> >>
> >
> > Seems it's a bug to put kobject_put(dev->kobj) in the if block.
> >
> > I created a stacked device (mdadm) and kmemleak still reported leaks
> > even after I fixed the blktrace issue. And then I moved kobejct_put()
> > outside the if, no more leaks reports.
> >
>
> Ok - I didn't have a testcase where the request_fn would be NULL.
> So in this case I propose this patch:
>
> ---
> Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs
> introduced in commit 1d54ad6da9192fed5dd3b60224d9f2dfea0dcd82.
> Release kobject also in case the request_fn is NULL.
>
> Problem was noticed via kmemleak backtrace when some sysfs entries were
> note properly destroyed during device removal:
Thanks, this looks good now, applied.
--
Jens Axboe
prev parent reply other threads:[~2009-09-25 4:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-21 10:07 [PATCH] Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs Zdenek Kabelac
2009-09-22 6:09 ` Li Zefan
2009-09-22 7:57 ` Zdenek Kabelac
2009-09-24 1:07 ` Li Zefan
2009-09-24 10:26 ` Zdenek Kabelac
2009-09-25 0:59 ` Li Zefan
2009-09-25 4:16 ` Jens Axboe [this message]
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=20090925041633.GQ23126@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=mbroz@redhat.com \
--cc=mingo@elte.hu \
--cc=tytso@mit.edu \
--cc=zdenek.kabelac@gmail.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.