From c1f25dc7c596c44a9b56f7831fbd664cc2848543 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Tue, 22 Apr 2003 09:14:38 -0700 Subject: [PATCH] [NET]: Do not let GCC reload pointers after NULL checks. --- net/socket.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/net/socket.c b/net/socket.c index 76bc02010167c..39a558da28cac 100644 --- a/net/socket.c +++ b/net/socket.c @@ -149,10 +149,12 @@ static __inline__ void net_family_bug(int family) int net_family_get(int family) { + struct net_proto_family *prot = net_families[family]; int rc = 1; - if (likely(net_families[family] != NULL)) - rc = try_module_get(net_families[family]->owner); + barrier(); + if (likely(prot != NULL)) + rc = try_module_get(prot->owner); else net_family_bug(family); return rc; @@ -160,8 +162,11 @@ int net_family_get(int family) void net_family_put(int family) { - if (likely(net_families[family] != NULL)) - module_put(net_families[family]->owner); + struct net_proto_family *prot = net_families[family]; + + barrier(); + if (likely(prot != NULL)) + module_put(prot->owner); else net_family_bug(family); } -- 2.53.0