Hi all,

I encounter a problem in my setup and am not able to find a nice solution or 
workaround. In our setup, we create VLANs on top of kni interfaces. They are 
created with another MAC address than the kni interface itself. This leads to a 
kernel oops due to the following.

* vlan_dev.c - vlan_dev_open
* since different mac - dev_uc_add
* dev_addr_list.c - dev_uc_add. Get lock with netif_addr_lock_bh and while 
holding the lock, __dev_set_rx_mode is used to set promiscuous mode if needed.
* dev.c - ops->ndo_set_rx_mode
* kni_net.c - kni_net_set_promiscusity
* kni_net.c - kni_net_process_request
* kni_net.c - kni_net_process_request calls wait_event_interruptible_timeout to 
wait for response from user space

And here I get the kernel Oops "BUG: scheduling while atomic" since 
wait_event_interruptible_timeout will trigger a call to schedule while we hold 
the lock from netif_addr_lock_bh.

I have created a temporary workaround where I have made 
kni_net_set_promiscusity just send the request and removed the response from 
user space since we anyway do not use it. Anyone else who has encountered this 
problem? Does anyone have a proposal for a better solution/workaround?


Best regards,

Peter

Disclaimer:
This communication (including any attachments) is intended for the use of the 
intended recipient(s) only and may contain information that is considered 
confidential, proprietary, sensitive and/or otherwise legally protected. Any 
unauthorized use or dissemination of this communication is strictly prohibited. 
If you have received this communication in error, please immediately notify the 
sender by return e-mail message and delete all copies of the original 
communication. Thank you for your cooperation.

Reply via email to