All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shyam Prasad N <nspmangalore@gmail.com>
To: Steve French <smfrench@gmail.com>
Cc: "zhangxiaoxu (A)" <zhangxiaoxu5@huawei.com>,
	CIFS <linux-cifs@vger.kernel.org>,
	Steve French <sfrench@samba.org>, Paulo Alcantara <pc@cjr.nz>,
	Ronnie Sahlberg <lsahlber@redhat.com>,
	Rohith Surabattula <rohiths@microsoft.com>
Subject: Re: [PATCH] cifs: Fix memory leak on the deferred close
Date: Fri, 19 Aug 2022 15:35:30 +0530	[thread overview]
Message-ID: <CANT5p=q2rp528NfOiaT8xEHNw2_Vkix2r42bsRL9D8CowWDmbA@mail.gmail.com> (raw)
In-Reply-To: <CAH2r5mtNS7ThH7QwYOewghx3HQ4nPaiZr_5PZZ+jCjbPdgxOYw@mail.gmail.com>

On Fri, Aug 19, 2022 at 8:29 AM Steve French <smfrench@gmail.com> wrote:
>
> Don't see any problems with this - but would like to run some more tests on it
>
> On Thu, Aug 18, 2022 at 8:24 PM zhangxiaoxu (A) <zhangxiaoxu5@huawei.com> wrote:
> >
> > running generic/029 and scan kmemleak on backend report this issue.
> >
> > 在 2022/8/19 0:28, Steve French 写道:
> > > looks promising - am reviewing this now.  Which xfstest did you see
> > > this when runnign?
> > >
> > > On Thu, Aug 18, 2022 at 8:01 AM Zhang Xiaoxu <zhangxiaoxu5@huawei.com> wrote:
> > >>
> > >> xfstests on smb21 report kmemleak as below:
> > >>
> > >>    unreferenced object 0xffff8881767d6200 (size 64):
> > >>      comm "xfs_io", pid 1284, jiffies 4294777434 (age 20.789s)
> > >>      hex dump (first 32 bytes):
> > >>        80 5a d0 11 81 88 ff ff 78 8a aa 63 81 88 ff ff  .Z......x..c....
> > >>        00 71 99 76 81 88 ff ff 00 00 00 00 00 00 00 00  .q.v............
> > >>      backtrace:
> > >>        [<00000000ad04e6ea>] cifs_close+0x92/0x2c0
> > >>        [<0000000028b93c82>] __fput+0xff/0x3f0
> > >>        [<00000000d8116851>] task_work_run+0x85/0xc0
> > >>        [<0000000027e14f9e>] do_exit+0x5e5/0x1240
> > >>        [<00000000fb492b95>] do_group_exit+0x58/0xe0
> > >>        [<00000000129a32d9>] __x64_sys_exit_group+0x28/0x30
> > >>        [<00000000e3f7d8e9>] do_syscall_64+0x35/0x80
> > >>        [<00000000102e8a0b>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
> > >>
> > >> When cancel the deferred close work, we should also cleanup the struct
> > >> cifs_deferred_close.
> > >>
> > >> Fixes: 9e992755be8f2 ("cifs: Call close synchronously during unlink/rename/lease break.")
> > >> Fixes: e3fc065682ebb ("cifs: Deferred close performance improvements")
> > >> Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
> > >> ---
> > >>   fs/cifs/misc.c | 6 ++++++
> > >>   1 file changed, 6 insertions(+)
> > >>
> > >> diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
> > >> index 1f2628ffe9d7..87f60f736731 100644
> > >> --- a/fs/cifs/misc.c
> > >> +++ b/fs/cifs/misc.c
> > >> @@ -737,6 +737,8 @@ cifs_close_deferred_file(struct cifsInodeInfo *cifs_inode)
> > >>          list_for_each_entry(cfile, &cifs_inode->openFileList, flist) {
> > >>                  if (delayed_work_pending(&cfile->deferred)) {
> > >>                          if (cancel_delayed_work(&cfile->deferred)) {
> > >> +                               cifs_del_deferred_close(cfile);
> > >> +
> > >>                                  tmp_list = kmalloc(sizeof(struct file_list), GFP_ATOMIC);
> > >>                                  if (tmp_list == NULL)
> > >>                                          break;
> > >> @@ -766,6 +768,8 @@ cifs_close_all_deferred_files(struct cifs_tcon *tcon)
> > >>          list_for_each_entry(cfile, &tcon->openFileList, tlist) {
> > >>                  if (delayed_work_pending(&cfile->deferred)) {
> > >>                          if (cancel_delayed_work(&cfile->deferred)) {
> > >> +                               cifs_del_deferred_close(cfile);
> > >> +
> > >>                                  tmp_list = kmalloc(sizeof(struct file_list), GFP_ATOMIC);
> > >>                                  if (tmp_list == NULL)
> > >>                                          break;
> > >> @@ -799,6 +803,8 @@ cifs_close_deferred_file_under_dentry(struct cifs_tcon *tcon, const char *path)
> > >>                  if (strstr(full_path, path)) {
> > >>                          if (delayed_work_pending(&cfile->deferred)) {
> > >>                                  if (cancel_delayed_work(&cfile->deferred)) {
> > >> +                                       cifs_del_deferred_close(cfile);
> > >> +
> > >>                                          tmp_list = kmalloc(sizeof(struct file_list), GFP_ATOMIC);
> > >>                                          if (tmp_list == NULL)
> > >>                                                  break;
> > >> --
> > >> 2.31.1
> > >>
> > >
> > >
>
>
>
> --
> Thanks,
>
> Steve

Thanks Zhang for the fix.
Looks good to me.

-- 
Regards,
Shyam

      parent reply	other threads:[~2022-08-19 10:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-18 13:50 [PATCH] cifs: Fix memory leak on the deferred close Zhang Xiaoxu
2022-08-18 16:28 ` Steve French
2022-08-19  1:24   ` zhangxiaoxu (A)
2022-08-19  2:53     ` Steve French
2022-08-19  8:22       ` zhangxiaoxu (A)
2022-08-19 10:05       ` Shyam Prasad N [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='CANT5p=q2rp528NfOiaT8xEHNw2_Vkix2r42bsRL9D8CowWDmbA@mail.gmail.com' \
    --to=nspmangalore@gmail.com \
    --cc=linux-cifs@vger.kernel.org \
    --cc=lsahlber@redhat.com \
    --cc=pc@cjr.nz \
    --cc=rohiths@microsoft.com \
    --cc=sfrench@samba.org \
    --cc=smfrench@gmail.com \
    --cc=zhangxiaoxu5@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.