2008-08-20 05:34:46

by Aneesh Kumar K.V

[permalink] [raw]
Subject: BUG: using smp_processor_id() in preemptible

BUG: using smp_processor_id() in preemptible [00000000] code:
fsstress/20995
caller is ext4_mb_initialize_context+0x20c/0x22c
Pid: 20995, comm: fsstress Not tainted 2.6.27-rc3-autokern1 #1
[<c0294a2f>] debug_smp_processor_id+0x9f/0xb8
[<c01e523d>] ext4_mb_initialize_context+0x20c/0x22c
[<c01ea017>] ext4_mb_new_blocks+0x17c/0x715
[<c0136b43>] ? trace_hardirqs_on+0xb/0xd
[<c01e23f2>] ext4_ext_get_blocks+0xbaf/0xde1
[<c0137d20>] ? __lock_acquire+0x61e/0x674
[<c0137d20>] ? __lock_acquire+0x61e/0x674
[<c01d464a>] ext4_get_blocks_wrap+0xce/0x1eb
[<c01dfaba>] ext4_fallocate+0x135/0x27d
[<c016472d>] ? fget+0x1d/0xd3
[<c01647aa>] ? fget+0x9a/0xd3
[<c01623a4>] sys_fallocate+0xce/0xf3
[<c0102bb9>] sysenter_do_call+0x12/0x35
=======================



2008-08-21 04:21:04

by Eric Sandeen

[permalink] [raw]
Subject: Re: BUG: using smp_processor_id() in preemptible

Aneesh Kumar K.V wrote:
> BUG: using smp_processor_id() in preemptible [00000000] code:
> fsstress/20995
> caller is ext4_mb_initialize_context+0x20c/0x22c
> Pid: 20995, comm: fsstress Not tainted 2.6.27-rc3-autokern1 #1
> [<c0294a2f>] debug_smp_processor_id+0x9f/0xb8
> [<c01e523d>] ext4_mb_initialize_context+0x20c/0x22c
> [<c01ea017>] ext4_mb_new_blocks+0x17c/0x715
> [<c0136b43>] ? trace_hardirqs_on+0xb/0xd
> [<c01e23f2>] ext4_ext_get_blocks+0xbaf/0xde1
> [<c0137d20>] ? __lock_acquire+0x61e/0x674
> [<c0137d20>] ? __lock_acquire+0x61e/0x674
> [<c01d464a>] ext4_get_blocks_wrap+0xce/0x1eb
> [<c01dfaba>] ext4_fallocate+0x135/0x27d
> [<c016472d>] ? fget+0x1d/0xd3
> [<c01647aa>] ? fget+0x9a/0xd3
> [<c01623a4>] sys_fallocate+0xce/0xf3
> [<c0102bb9>] sysenter_do_call+0x12/0x35
> =======================

whoops, ok, I should probably convert it to use raw_smp_processor_id; I
don't think we care if we get pre-empted and the cpu changes; we use the
cpu id exactly once to grab it from the array, I think we don't need any
atomicity. I'll convert to raw_smp_processor_id() to avoid the debug
check, unless anyone sees a problem with that ...

-Eric