Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /net/ipv4/inet_diag.c

Filename:/net/ipv4/inet_diag.c
Lines Added:9
Lines Deleted:8
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25  2.6.26-git7  2.6.26-git8  2.6.26-git9 

Location
[  2.6.25-rc7
  [  net
    [  ipv4
       o  inet_diag.c

Patch

diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
index e468e7a..da97695 100644
--- a/net/ipv4/inet_diag.c
+++ b/net/ipv4/inet_diag.c
@@ -259,20 +259,22 @@ static int inet_diag_get_exact(struct sk_buff *in_skb,
    const struct inet_diag_handler *handler;
 
    handler = inet_diag_lock_handler(nlh->nlmsg_type);
-   if (!handler)
-      return -ENOENT;
+   if (IS_ERR(handler)) {
+      err = PTR_ERR(handler);
+      goto unlock;
+   }
 
    hashinfo = handler->idiag_hashinfo;
    err = -EINVAL;
 
    if (req->idiag_family == AF_INET) {
-      sk = inet_lookup(hashinfo, req->id.idiag_dst[0],
+      sk = inet_lookup(&init_net, hashinfo, req->id.idiag_dst[0],
              req->id.idiag_dport, req->id.idiag_src[0],
              req->id.idiag_sport, req->id.idiag_if);
    }
 #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
    else if (req->idiag_family == AF_INET6) {
-      sk = inet6_lookup(hashinfo,
+      sk = inet6_lookup(&init_net, hashinfo,
               (struct in6_addr *)req->id.idiag_dst,
               req->id.idiag_dport,
               (struct in6_addr *)req->id.idiag_src,
@@ -708,8 +710,8 @@ static int inet_diag_dump(struct sk_buff *skb, struct netlink_callback *cb)
    struct inet_hashinfo *hashinfo;
 
    handler = inet_diag_lock_handler(cb->nlh->nlmsg_type);
-   if (!handler)
-      goto no_handler;
+   if (IS_ERR(handler))
+      goto unlock;
 
    hashinfo = handler->idiag_hashinfo;
 
@@ -838,7 +840,6 @@ done:
    cb->args[2] = num;
 unlock:
    inet_diag_unlock_handler(handler);
-no_handler:
    return skb->len;
 }
 
@@ -935,7 +936,7 @@ out_free_table:
 
 static void __exit inet_diag_exit(void)
 {
-   sock_release(idiagnl->sk_socket);
+   netlink_kernel_release(idiagnl);
    kfree(inet_diag_table);
 }
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.