Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1299844
| From | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 10/13] teach proc_self_get_link()/proc_thread_self_get_link() to work in RCU mode |
| Date | 2016-01-01 07:50 +0100 |
| Message-ID | <qM1Hc-6Hb-5@gated-at.bofh.it> (permalink) |
| References | <qM1xv-6DT-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> --- fs/proc/self.c | 8 +++----- fs/proc/thread_self.c | 9 ++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/fs/proc/self.c b/fs/proc/self.c index 9dd0ae6..7a8b19e 100644 --- a/fs/proc/self.c +++ b/fs/proc/self.c @@ -25,14 +25,12 @@ static const char *proc_self_get_link(struct dentry *dentry, pid_t tgid = task_tgid_nr_ns(current, ns); char *name; - if (!dentry) - return ERR_PTR(-ECHILD); if (!tgid) return ERR_PTR(-ENOENT); /* 11 for max length of signed int in decimal + NULL term */ - name = kmalloc(12, GFP_KERNEL); - if (!name) - return ERR_PTR(-ENOMEM); + name = kmalloc(12, dentry ? GFP_KERNEL : GFP_ATOMIC); + if (unlikely(!name)) + return dentry ? ERR_PTR(-ENOMEM) : ERR_PTR(-ECHILD); sprintf(name, "%d", tgid); return *cookie = name; } diff --git a/fs/proc/thread_self.c b/fs/proc/thread_self.c index 50eef6f..03eaa84 100644 --- a/fs/proc/thread_self.c +++ b/fs/proc/thread_self.c @@ -27,13 +27,12 @@ static const char *proc_thread_self_get_link(struct dentry *dentry, pid_t pid = task_pid_nr_ns(current, ns); char *name; - if (!dentry) - return ERR_PTR(-ECHILD); if (!pid) return ERR_PTR(-ENOENT); - name = kmalloc(PROC_NUMBUF + 6 + PROC_NUMBUF, GFP_KERNEL); - if (!name) - return ERR_PTR(-ENOMEM); + name = kmalloc(PROC_NUMBUF + 6 + PROC_NUMBUF, + dentry ? GFP_KERNEL : GFP_ATOMIC); + if (unlikely(!name)) + return dentry ? ERR_PTR(-ENOMEM) : ERR_PTR(-ECHILD); sprintf(name, "%d/task/%d", tgid, pid); return *cookie = name; } -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[RFC] ->get_link(), ->put_link() and cookies Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
[PATCH 02/13] logfs: don't duplicate page_symlink_inode_operations Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
[PATCH 11/13] teach nfs_get_link() to work in RCU mode Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
[PATCH 03/13] udf: don't duplicate page_symlink_inode_operations Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
Re: [PATCH 03/13] udf: don't duplicate page_symlink_inode_operations Jan Kara <jack@suse.cz> - 2016-01-05 17:30 +0100
[PATCH 01/13] switch befs long symlinks to page_symlink_operations Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
[PATCH 09/13] teach shmem_get_link() to work in RCU mode Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
[PATCH 06/13] don't put symlink bodies in pagecache into highmem Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:40 +0100
[PATCH 12/13] kill free_page_put_link() Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:50 +0100
[PATCH 05/13] namei: page_getlink() and page_follow_link_light() are the same thing Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:50 +0100
[PATCH 10/13] teach proc_self_get_link()/proc_thread_self_get_link() to work in RCU mode Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:50 +0100
[PATCH 08/13] teach page_get_link() to work in RCU mode Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:50 +0100
[PATCH 04/13] ufs: get rid of ->setattr() for symlinks Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-01 07:50 +0100
Re: [RFC] ->get_link(), ->put_link() and cookies Linus Torvalds <torvalds@linux-foundation.org> - 2016-01-03 21:00 +0100
Re: [RFC] ->get_link(), ->put_link() and cookies Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-03 21:30 +0100
Re: [RFC] ->get_link(), ->put_link() and cookies Linus Torvalds <torvalds@linux-foundation.org> - 2016-01-03 21:50 +0100
Re: [RFC] ->get_link(), ->put_link() and cookies Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-03 22:50 +0100
csiph-web