Message ID | 20180227224358.12672-2-danilokrummrich@dk-develop.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Feb 27, 2018 at 2:43 PM, Danilo Krummrich <danilokrummrich@dk-develop.de> wrote: > proc_sys_link_fill_cache() does not need to check whether we're > called for a link - it's already done by scan(). > > Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de> > --- > fs/proc/proc_sysctl.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c > index a0b6c647835e..7e7d9facb842 100644 > --- a/fs/proc/proc_sysctl.c > +++ b/fs/proc/proc_sysctl.c > @@ -707,17 +707,16 @@ static bool proc_sys_link_fill_cache(struct file *file, > struct ctl_table *table) > { > bool ret = true; > + int err = 0; > head = sysctl_head_grab(head); > > if (IS_ERR(head)) > return false; > > - if (S_ISLNK(table->mode)) { > - /* It is not an error if we can not follow the link ignore it */ > - int err = sysctl_follow_link(&head, &table); > - if (err) > - goto out; > - } > + /* It is not an error if we can not follow the link ignore it */ > + sysctl_follow_link(&head, &table); Shouldn't this be err = sysctl_follow_link... ? Otherwise I don't see where err is used. -Kees > + if (err) > + goto out; > > ret = proc_sys_fill_cache(file, ctx, head, table); > out: > -- > 2.14.1 >
On 2018-02-27 23:59, Kees Cook wrote: > On Tue, Feb 27, 2018 at 2:43 PM, Danilo Krummrich > <danilokrummrich@dk-develop.de> wrote: >> proc_sys_link_fill_cache() does not need to check whether we're >> called for a link - it's already done by scan(). >> >> Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de> >> --- >> fs/proc/proc_sysctl.c | 11 +++++------ >> 1 file changed, 5 insertions(+), 6 deletions(-) >> >> diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c >> index a0b6c647835e..7e7d9facb842 100644 >> --- a/fs/proc/proc_sysctl.c >> +++ b/fs/proc/proc_sysctl.c >> @@ -707,17 +707,16 @@ static bool proc_sys_link_fill_cache(struct file >> *file, >> struct ctl_table *table) >> { >> bool ret = true; >> + int err = 0; >> head = sysctl_head_grab(head); >> >> if (IS_ERR(head)) >> return false; >> >> - if (S_ISLNK(table->mode)) { >> - /* It is not an error if we can not follow the link >> ignore it */ >> - int err = sysctl_follow_link(&head, &table); >> - if (err) >> - goto out; >> - } >> + /* It is not an error if we can not follow the link ignore it >> */ >> + sysctl_follow_link(&head, &table); > > Shouldn't this be err = sysctl_follow_link... ? Otherwise I don't see > where err is used. > > -Kees > Of course, thanks. >> + if (err) >> + goto out; >> >> ret = proc_sys_fill_cache(file, ctx, head, table); >> out: >> -- >> 2.14.1 >>
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index a0b6c647835e..7e7d9facb842 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -707,17 +707,16 @@ static bool proc_sys_link_fill_cache(struct file *file, struct ctl_table *table) { bool ret = true; + int err = 0; head = sysctl_head_grab(head); if (IS_ERR(head)) return false; - if (S_ISLNK(table->mode)) { - /* It is not an error if we can not follow the link ignore it */ - int err = sysctl_follow_link(&head, &table); - if (err) - goto out; - } + /* It is not an error if we can not follow the link ignore it */ + sysctl_follow_link(&head, &table); + if (err) + goto out; ret = proc_sys_fill_cache(file, ctx, head, table); out:
proc_sys_link_fill_cache() does not need to check whether we're called for a link - it's already done by scan(). Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de> --- fs/proc/proc_sysctl.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)