diff mbox

[1/2] netns: Fail conspicously if someone uses net_generic at an inappropriate time.

Message ID m1ehumc8r4.fsf_-_@fess.ebiederm.org
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Eric W. Biederman Jan. 27, 2012, 12:02 a.m. UTC
By definition net_generic should never be called when it can return
NULL.  Fail conspicously with a BUG_ON to make it clear when people mess
up that a NULL return should never happen.

Recently there was a bug in the CAIF subsystem where it was registered
with register_pernet_device instead of register_pernet_subsys.  It was
erroneously concluded that net_generic could validly return NULL and
that net_assign_generic was buggy (when it was just inefficient).
Hopefully this BUG_ON will prevent people to coming to similar erroneous
conclusions in the futrue.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
 include/net/netns/generic.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

Comments

David Miller Jan. 28, 2012, 2:07 a.m. UTC | #1
From: ebiederm@xmission.com (Eric W. Biederman)
Date: Thu, 26 Jan 2012 16:02:55 -0800

> By definition net_generic should never be called when it can return
> NULL.  Fail conspicously with a BUG_ON to make it clear when people mess
> up that a NULL return should never happen.
> 
> Recently there was a bug in the CAIF subsystem where it was registered
> with register_pernet_device instead of register_pernet_subsys.  It was
> erroneously concluded that net_generic could validly return NULL and
> that net_assign_generic was buggy (when it was just inefficient).
> Hopefully this BUG_ON will prevent people to coming to similar erroneous
> conclusions in the futrue.
> 
> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/net/netns/generic.h b/include/net/netns/generic.h
index 3419bf5..d55f434 100644
--- a/include/net/netns/generic.h
+++ b/include/net/netns/generic.h
@@ -41,6 +41,7 @@  static inline void *net_generic(const struct net *net, int id)
 	ptr = ng->ptr[id - 1];
 	rcu_read_unlock();
 
+	BUG_ON(!ptr);
 	return ptr;
 }
 #endif