Re: (more) Sleeping function called from illegal context...

Andrew Morton (akpm@digeo.com)
Fri, 27 Sep 2002 18:27:44 -0700


Luc Van Oostenryck wrote:
>
> With CONFIG_PREEMPT=y on an SMP AMD (2CPU):
>
> Sleeping function called from illegal context at slab.c:1374
> f79dbe2c c0117094 c0280b00 c02847cb 0000055e f7817b40 c01328fd c02847cb
> 0000055e f79da000 f7ede980 c03ecc58 f7817b40 c025af91 c18cf248 c0266b3e
> 00000024 000001d0 f79da000 00000286 00000001 bffffc9c c02f63e0 c0266e20
> Call Trace:
> [<c0117094>]__might_sleep+0x54/0x58
> [<c01328fd>]kmalloc+0x5d/0x1e0
> [<c025af91>]fib_add_ifaddr+0x61/0x110
> [<c0266b3e>]__sctp_get_local_addr_list+0x9e/0x140
> [<c0266e20>]sctp_netdev_event+0x30/0x60
> [<c01241ae>]notifier_call_chain+0x1e/0x40
> [<c02566f5>]inet_insert_ifa+0x1b5/0x1c0
> [<c02567b4>]inet_set_ifa+0xb4/0xc0
> [<c0257091>]devinet_ioctl+0x511/0x740
> [<c0259897>]inet_ioctl+0x157/0x1b0
> [<c021e276>]sock_ioctl+0x56/0x90
> [<c0150039>]sys_ioctl+0x289/0x2d8
> [<c0107d11>]error_code+0x2d/0x38
> [<c01072cf>]syscall_call+0x7/0xb
>

sctp_v4_get_local_addr_list():

/* XXX BUG: sleeping allocation with lock held -DaveM */
addr = t_new(struct sockaddr_storage_list, GFP_KERNEL);

Is true. We're holding dev_base_lock, inetdev_lock and in_dev->lock
here.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/