On Fri, Aug 12, 2016 at 11:04 PM, Nick Hudson <skrll%netbsd.org@localhost> wrote:
On 07/28/16 10:03, Ryota Ozaki wrote:
Module Name: src
Committed By: ozaki-r
Date: Thu Jul 28 09:03:51 UTC 2016
Modified Files:
src/sys/netinet: if_arp.c in.c
src/sys/netinet6: in6.c nd6_nbr.c
Log Message:
Fix panic on adding/deleting IP addresses under network load
Adding and deleting IP addresses aren't serialized with other network
opeartions, e.g., forwarding packets. So if we add or delete an IP
address under network load, a kernel panic may happen on manipulating
network-related shared objects such as rtentry and rtcache.
To avoid such panicks, we still need to hold softnet_lock in in_control
and in6_control that are called via ioctl and do network-related
operations
including IP address additions/deletions.
Fix PR kern/51356
Hi,
This is contributory to the problems in
http://gnats.netbsd.org/49065
http://gnats.netbsd.org/50491
http://gnats.netbsd.org/51395
Where softnet_lock is held by something that sleeps, e.g. a usb transfer.
http://mail-index.netbsd.org/tech-net/2015/12/06/msg005443.html
This patch
http://www.netbsd.org/~skrll/usb.softint.diff
helps, but I'm not sure it deals with all the problems in the network stack.
Is this something you intend to address?
No. The commit prevents parallel accesses on shared data (rtentry, ifaddr,
etc.). The issue of USB transfers seem to be a deadlock between softints
of the network stack and USB interrupt processing.
I think we can commit your patch if it fixes the PRs and doesn't break
anything.
Of course we should get rid of softnet_lock at some point.
Thanks,
ozaki-r