Re: [perfmon2] [PATCH] perfmon: fix getname() error handler
Status: Beta
Brought to you by:
seranian
From: stephane e. <er...@go...> - 2009-02-05 13:29:13
|
Robert, This patch was applied to perfmon2 and perfmon3 Thanks. On Wed, Feb 4, 2009 at 10:31 AM, Robert Richter <rob...@am...> wrote: > This patch fixes the following bug: > > BUG: unable to handle kernel paging request at fffffffffffffffe > IP: [<ffffffff8032e80e>] strcmp+0x5/0x19 > PGD 203067 PUD 204067 PMD 0 > Oops: 0000 [#1] SMP > last sysfs file: /sys/kernel/perfmon/version > CPU 7 > Modules linked in: > Pid: 5135, comm: ibs_sampling Not tainted 2.6.28-perfmon-x86_64-standard-00431-gec92131 #1 > RIP: 0010:[<ffffffff8032e80e>] [<ffffffff8032e80e>] strcmp+0x5/0x19 > RSP: 0018:ffff88042f1d1e60 EFLAGS: 00010287 > RAX: 0000000000000064 RBX: ffffffff807430e0 RCX: ffff88042f1d1f10 > RDX: 0000000000000064 RSI: fffffffffffffffe RDI: ffffffff806b37b4 > RBP: fffffffffffffffe R08: ffff88042f1d1f10 R09: 0000000000000000 > R10: 00007fc1561cc6f0 R11: 0000000000000206 R12: 00007fc1561cc6f0 > R13: 0000000000000000 R14: ffff88042f1d1f18 R15: 0000000000000040 > FS: 00007fc1561cc6f0(0000) GS:ffff88042f99df40(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b > CR2: fffffffffffffffe CR3: 000000042d990000 CR4: 00000000000006e0 > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 > Process ibs_sampling (pid: 5135, threadinfo ffff88042f1d0000, task ffff88042fb5d8d0) > Stack: > ffffffff803299c4 ffff88042f1d1f10 fffffffffffffffe 00007fc1561cc6f0 > ffffffff80329a05 fffffffffffffffe ffffffff80328501 ffff88042db0d1e0 > ffff88042f1d1f10 ffff88042f1d1f08 00007fff5e1d2110 00007fff5e1d1fc0 > Call Trace: > [<ffffffff803299c4>] ? pfm_find_fmt+0x2c/0x55 > [<ffffffff80329a05>] ? pfm_smpl_fmt_get+0x18/0x5c > [<ffffffff80328501>] ? pfm_get_smpl_arg+0x84/0x1c7 > [<ffffffff803224a6>] ? sys_pfm_create_context+0xcd/0x109 > [<ffffffff802652ed>] ? do_munmap+0x298/0x2b3 > [<ffffffff8020b20b>] ? system_call_fastpath+0x16/0x1b > Code: 14 08 72 04 0f 0b eb fe 4d 29 c1 4d 01 c2 49 8d 41 ff 4c 39 c9 4c 89 d7 fc 48 0f 43 c8 48 89 d0 f3 a4 c6 07 00 c3 0f b6 17 89 d0 <2a> 06 48 ff c6 84 c0 75 07 48 ff c7 84 d2 75 eb 0f be c0 c3 31 > RIP [<ffffffff8032e80e>] strcmp+0x5/0x19 > RSP <ffff88042f1d1e60> > CR2: fffffffffffffffe > ---[ end trace 548f9728b73203d7 ]--- > > Signed-off-by: Robert Richter <rob...@am...> > --- > perfmon/perfmon_smpl.c | 7 ++++--- > 1 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/perfmon/perfmon_smpl.c b/perfmon/perfmon_smpl.c > index e31fb15..a6e26d7 100644 > --- a/perfmon/perfmon_smpl.c > +++ b/perfmon/perfmon_smpl.c > @@ -811,9 +811,10 @@ int pfm_get_smpl_arg(char __user *fmt_uname, void __user *fmt_uarg, size_t usize > int ret; > > fmt_name = getname(fmt_uname); > - if (!fmt_name) { > - PFM_DBG("getname failed"); > - return -ENOMEM; > + ret = PTR_ERR(fmt_name); > + if (IS_ERR(fmt_name)) { > + PFM_DBG("getname failed: %d", ret); > + return ret; > } > > /* > -- > 1.6.1 > > > |