Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/doc write down some observations about the locking wild west...



details:   https://anonhg.NetBSD.org/src/rev/c13dbe7868f8
branches:  trunk
changeset: 1009853:c13dbe7868f8
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Tue May 05 09:33:39 2020 +0000

description:
write down some observations about the locking wild west around if_mcast_op()

diffstat:

 doc/TODO.smpnet |  13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diffs (27 lines):

diff -r 84ffa68c74aa -r c13dbe7868f8 doc/TODO.smpnet
--- a/doc/TODO.smpnet   Tue May 05 09:26:29 2020 +0000
+++ b/doc/TODO.smpnet   Tue May 05 09:33:39 2020 +0000
@@ -1,4 +1,4 @@
-$NetBSD: TODO.smpnet,v 1.34 2020/01/20 18:40:06 thorpej Exp $
+$NetBSD: TODO.smpnet,v 1.35 2020/05/05 09:33:39 jdolecek Exp $
 
 MP-safe components
 ==================
@@ -121,6 +121,17 @@
 context.  It's a workaround and once the functions run in softint, we should use
 the original bpf_mtap again.
 
+if_mcast_op() - SIOCADDMULTI/SIOCDELMULTI
+-----------------------------------------
+Helper function is called to add or remove multicast addresses for
+interface.  When called via ioctl it takes IFNET_LOCK(), when called
+via sosetopt() it doesn't.
+
+Various network drivers can't assert IFNET_LOCKED() in their if_ioctl
+because of this. Generally drivers still take care to splnet() even
+with NET_MPSAFE before calling ether_ioctl(), but they do not take
+KERNEL_LOCK(), so this is actually unsafe.
+
 Lingering obsolete variables
 -----------------------------
 



Home | Main Index | Thread Index | Old Index