Re: [next-20130227] kernel NULL pointer dereference [ watchdog | perfrelated ? ]

From: Sedat Dilek
Date: Thu Feb 28 2013 - 02:27:42 EST


On Thu, Feb 28, 2013 at 8:24 AM, Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
> On Wed, Feb 27, 2013 at 4:07 PM, Tejun Heo <tj@xxxxxxxxxx> wrote:
>> Replying here too just in case.
>>
>> On Wed, Feb 27, 2013 at 02:08:40PM +0100, Sedat Dilek wrote:
>>> >> static inline void *idr_find(struct idr *idr, int id)
>>> >> {
>>> >> struct idr_layer *hint = rcu_dereference_raw(idr->hint);
>>> >> 86d7: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 86de <perf_init_event+0x2e>
>>> >> 86da: R_X86_64_PC32 .bss+0xfc
>>> >>
>>> >> if ((id & ~IDR_MASK) == hint->prefix)
>>> >> 86de: 89 f2 mov %esi,%edx
>>> >> 86e0: 30 d2 xor %dl,%dl
>>> >> 86e2: 3b 10 cmp (%rax),%edx <--- trapping insn
>>> >> 86e4: 74 4a je 8730 <perf_init_event+0x80>
>>> >> return rcu_dereference_raw(hint->ary[id & IDR_MASK]);
>>> >>
>>> >>
>>> >> So 'hint' is NULL as RAX above confirms and we're not supposed to deref
>>> >> NULL things.
>>> >>
>>> >> Looking at 29cf29e1fbb875019713eb55cf27ec35f1e5fa5e, Tejun should
>>> >> probably know. CCed.
>>
>> Fix was posted some days ago.
>>
>> http://thread.gmane.org/gmane.linux.kernel.next/26213
>>
>> I got Andrew's patch added to -mm message a week ago. Not sure why it
>> still hasn't showed up. Andrew, any ideas?
>>
>> Thanks.
>>
>> --
>> tejun
>
> AFAICS the updated (correct) patch "idr: implement lookup hint" is now
> in mainline.
>

...but not in next-20130228 yet (tomorrow's Linux-Next will have it).

- Sedat -

> - Sedat -
>
> [1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=0ffc2a9c8072969253a20821c2c733a2cbb4c7c7
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/