diff options
Diffstat (limited to 'net/ipv6/protocol.c')
| -rw-r--r-- | net/ipv6/protocol.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/net/ipv6/protocol.c b/net/ipv6/protocol.c index 9a7978fdc02a..053082dfc93e 100644 --- a/net/ipv6/protocol.c +++ b/net/ipv6/protocol.c | |||
| @@ -29,9 +29,7 @@ const struct inet6_protocol __rcu *inet6_protos[MAX_INET_PROTOS] __read_mostly; | |||
| 29 | 29 | ||
| 30 | int inet6_add_protocol(const struct inet6_protocol *prot, unsigned char protocol) | 30 | int inet6_add_protocol(const struct inet6_protocol *prot, unsigned char protocol) |
| 31 | { | 31 | { |
| 32 | int hash = protocol & (MAX_INET_PROTOS - 1); | 32 | return !cmpxchg((const struct inet6_protocol **)&inet6_protos[protocol], |
| 33 | |||
| 34 | return !cmpxchg((const struct inet6_protocol **)&inet6_protos[hash], | ||
| 35 | NULL, prot) ? 0 : -1; | 33 | NULL, prot) ? 0 : -1; |
| 36 | } | 34 | } |
| 37 | EXPORT_SYMBOL(inet6_add_protocol); | 35 | EXPORT_SYMBOL(inet6_add_protocol); |
| @@ -42,9 +40,9 @@ EXPORT_SYMBOL(inet6_add_protocol); | |||
| 42 | 40 | ||
| 43 | int inet6_del_protocol(const struct inet6_protocol *prot, unsigned char protocol) | 41 | int inet6_del_protocol(const struct inet6_protocol *prot, unsigned char protocol) |
| 44 | { | 42 | { |
| 45 | int ret, hash = protocol & (MAX_INET_PROTOS - 1); | 43 | int ret; |
| 46 | 44 | ||
| 47 | ret = (cmpxchg((const struct inet6_protocol **)&inet6_protos[hash], | 45 | ret = (cmpxchg((const struct inet6_protocol **)&inet6_protos[protocol], |
| 48 | prot, NULL) == prot) ? 0 : -1; | 46 | prot, NULL) == prot) ? 0 : -1; |
| 49 | 47 | ||
| 50 | synchronize_net(); | 48 | synchronize_net(); |
