diff options
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index c13594579bfb..ac63b56e23b2 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -341,11 +341,11 @@ set_rcvbuf: | |||
341 | sock_reset_flag(sk, SOCK_LINGER); | 341 | sock_reset_flag(sk, SOCK_LINGER); |
342 | else { | 342 | else { |
343 | #if (BITS_PER_LONG == 32) | 343 | #if (BITS_PER_LONG == 32) |
344 | if (ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ) | 344 | if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ) |
345 | sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT; | 345 | sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT; |
346 | else | 346 | else |
347 | #endif | 347 | #endif |
348 | sk->sk_lingertime = ling.l_linger * HZ; | 348 | sk->sk_lingertime = (unsigned int)ling.l_linger * HZ; |
349 | sock_set_flag(sk, SOCK_LINGER); | 349 | sock_set_flag(sk, SOCK_LINGER); |
350 | } | 350 | } |
351 | break; | 351 | break; |
@@ -1529,6 +1529,8 @@ EXPORT_SYMBOL(proto_register); | |||
1529 | void proto_unregister(struct proto *prot) | 1529 | void proto_unregister(struct proto *prot) |
1530 | { | 1530 | { |
1531 | write_lock(&proto_list_lock); | 1531 | write_lock(&proto_list_lock); |
1532 | list_del(&prot->node); | ||
1533 | write_unlock(&proto_list_lock); | ||
1532 | 1534 | ||
1533 | if (prot->slab != NULL) { | 1535 | if (prot->slab != NULL) { |
1534 | kmem_cache_destroy(prot->slab); | 1536 | kmem_cache_destroy(prot->slab); |
@@ -1550,9 +1552,6 @@ void proto_unregister(struct proto *prot) | |||
1550 | kfree(name); | 1552 | kfree(name); |
1551 | prot->twsk_slab = NULL; | 1553 | prot->twsk_slab = NULL; |
1552 | } | 1554 | } |
1553 | |||
1554 | list_del(&prot->node); | ||
1555 | write_unlock(&proto_list_lock); | ||
1556 | } | 1555 | } |
1557 | 1556 | ||
1558 | EXPORT_SYMBOL(proto_unregister); | 1557 | EXPORT_SYMBOL(proto_unregister); |