]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
net: Make the copy length in af_packet sockopt handler unsigned
authorArjan van de Ven <arjan@linux.intel.com>
Wed, 30 Sep 2009 11:54:47 +0000 (13:54 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 15:11:47 +0000 (08:11 -0700)
fixed upstream in commit b7058842c940ad2c08dd829b21e5c92ebe3b8758 in a different way

The length of the to-copy data structure is currently stored in
a signed integer. However many comparisons are done with sizeof(..)
which is unsigned. It's more suitable for this variable to be unsigned
to make these comparisons more naturally right.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/packet/af_packet.c

index 4b508782c44b188ef34e2bb59f63d5fef6eb30ec..ade1ebd1536452cc52a7eb4b48bfbdd100a92ca8 100644 (file)
@@ -1500,7 +1500,7 @@ packet_setsockopt(struct socket *sock, int level, int optname, char __user *optv
 static int packet_getsockopt(struct socket *sock, int level, int optname,
                             char __user *optval, int __user *optlen)
 {
-       int len;
+       unsigned int len;
        int val;
        struct sock *sk = sock->sk;
        struct packet_sock *po = pkt_sk(sk);
@@ -1513,7 +1513,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
        if (get_user(len, optlen))
                return -EFAULT;
 
-       if (len < 0)
+       if ((int)len < 0)
                return -EINVAL;
 
        switch(optname) {