Messages in this thread | | | Subject | Re: [PATCH 3/3] tracing: Verify target file before registering a uprobe event | From | Steven Rostedt <> | Date | Mon, 07 Jan 2013 08:59:25 -0500 |
| |
On Fri, 2013-01-04 at 13:30 +0900, Namhyung Kim wrote: > Hi, Steve. > > On Wed, 02 Jan 2013 17:50:38 -0500, Steven Rostedt wrote: > > From: Jovi Zhang <bookjovi@gmail.com> > > > > Without this patch, we can register a uprobe event for a directory. > > Enabling such a uprobe event would fail anyway . > > > > Example: > > $ echo 'p /bin:0x4245c0' > /sys/kernel/debug/tracing/uprobe_events > > > > However dirctories cannot be valid targets for uprobe. > > Hence verify if the target is a regular file during the probe > > registration. > > > > Signed-off-by: Jovi Zhang <bookjovi@gmail.com> > > Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org> > > --- > > kernel/trace/trace_uprobe.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c > > index 03003cd..0815f25 100644 > > --- a/kernel/trace/trace_uprobe.c > > +++ b/kernel/trace/trace_uprobe.c > > @@ -257,6 +257,10 @@ static int create_trace_uprobe(int argc, char **argv) > > goto fail_address_parse; > > > > inode = igrab(path.dentry->d_inode); > > + if (!S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)) { > > Doesn't !S_ISREG() include S_ISDIR() case too?
You're correct. Although I'm sure gcc should be smart enough to optimize that out.
> > Anyway I can see an additional whitespace in front of the "if".
Yep, I forgot to run checkpatch on this. OK, this bug isn't that big of a deal, so I'll take this patch out and put it into the 3.9 queue.
Thanks,
-- Steve
> > Thanks, > Namhyung > > > > + ret = -EINVAL; > > + goto fail_address_parse; > > + } > > > > argc -= 2; > > argv += 2; > > @@ -356,7 +360,7 @@ fail_address_parse: > > if (inode) > > iput(inode); > > > > - pr_info("Failed to parse address.\n"); > > + pr_info("Failed to parse address or file.\n"); > > > > return ret; > > }
| |