]> err.no Git - linux-2.6/blobdiff - net/ipv4/ip_sockglue.c
Merge branch 'sg' of git://git.kernel.dk/linux-2.6-block
[linux-2.6] / net / ipv4 / ip_sockglue.c
index 4d544573f48adb373e9553141702250a350e3f4e..f51f20e487c8c74ec078781790d35e7302ba6cb3 100644 (file)
@@ -602,7 +602,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
                                dev_put(dev);
                        }
                } else
-                       dev = __dev_get_by_index(mreq.imr_ifindex);
+                       dev = __dev_get_by_index(&init_net, mreq.imr_ifindex);
 
 
                err = -EADDRNOTAVAIL;
@@ -625,6 +625,10 @@ static int do_ip_setsockopt(struct sock *sk, int level,
        {
                struct ip_mreqn mreq;
 
+               err = -EPROTO;
+               if (inet_sk(sk)->is_icsk)
+                       break;
+
                if (optlen < sizeof(struct ip_mreq))
                        goto e_inval;
                err = -EFAULT;
@@ -655,7 +659,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
                        break;
                }
                msf = kmalloc(optlen, GFP_KERNEL);
-               if (msf == 0) {
+               if (!msf) {
                        err = -ENOBUFS;
                        break;
                }
@@ -812,7 +816,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
                        break;
                }
                gsf = kmalloc(optlen,GFP_KERNEL);
-               if (gsf == 0) {
+               if (!gsf) {
                        err = -ENOBUFS;
                        break;
                }
@@ -832,7 +836,7 @@ static int do_ip_setsockopt(struct sock *sk, int level,
                }
                msize = IP_MSFILTER_SIZE(gsf->gf_numsrc);
                msf = kmalloc(msize,GFP_KERNEL);
-               if (msf == 0) {
+               if (!msf) {
                        err = -ENOBUFS;
                        goto mc_msf_out;
                }