linux-cifs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* build_path_from_dentry_optional_prefix() may schedule from invalid context
@ 2019-08-29  5:02 Sergey Senozhatsky
  2019-09-20  0:11 ` Pavel Shilovsky
  0 siblings, 1 reply; 6+ messages in thread
From: Sergey Senozhatsky @ 2019-08-29  5:02 UTC (permalink / raw)
  To: Steve French, Ronnie Sahlberg; +Cc: linux-cifs, linux-kernel

Hello,

Looking at commit "cifs: create a helper to find a writeable handle
by path name":

->open_file_lock scope is atomic context, while build_path_from_dentry()
can schedule - kmalloc(GFP_KERNEL)

       spin_lock(&tcon->open_file_lock);
       list_for_each(tmp, &tcon->openFileList) {
               cfile = list_entry(tmp, struct cifsFileInfo,
                            tlist);
               full_path = build_path_from_dentry(cfile->dentry);
               if (full_path == NULL) {
                       spin_unlock(&tcon->open_file_lock);
                       return -ENOMEM;
               }
               if (strcmp(full_path, name)) {
                       kfree(full_path);
                       continue;
               }
               kfree(full_path);

               cinode = CIFS_I(d_inode(cfile->dentry));
               spin_unlock(&tcon->open_file_lock);
               return cifs_get_writable_file(cinode, 0, ret_file);
       }

       spin_unlock(&tcon->open_file_lock);

Additionally, kfree() can (and should) be done outside of
->open_file_lock scope.

	-ss

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-12-10 19:15 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-29  5:02 build_path_from_dentry_optional_prefix() may schedule from invalid context Sergey Senozhatsky
2019-09-20  0:11 ` Pavel Shilovsky
2019-09-21 22:38   ` Al Viro
2019-09-30 17:32     ` Pavel Shilovsky
2019-12-09  0:34       ` Al Viro
2019-12-10 19:14         ` Pavel Shilovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).