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

From: Sedat Dilek
Date: Thu Feb 28 2013 - 02:24:50 EST


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.

- 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/