]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
API fix (as described on the mailing list): call socket option
authorthuermann <thuermann@030b6a49-0b11-0410-94ab-b0dab22257f2>
Tue, 28 Nov 2006 09:43:07 +0000 (09:43 +0000)
committerthuermann <thuermann@030b6a49-0b11-0410-94ab-b0dab22257f2>
Tue, 28 Nov 2006 09:43:07 +0000 (09:43 +0000)
CAN_RAW_ERR_FILTER with optval=0 instead of optlen=0 to clear the
error mask.

git-svn-id: svn://svn.berlios.de//socketcan/trunk@106 030b6a49-0b11-0410-94ab-b0dab22257f2

kernel/2.6/net/can/raw.c

index a03fdbc1cda0fda7e7931a32397575568d23fc84..0776d1f66e1dbbb84017fc3dc96e18861ac88bdd 100644 (file)
@@ -413,12 +413,10 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
                break;
 
        case CAN_RAW_ERR_FILTER:
-               if (optlen) {
-                       if (optlen != sizeof(err_mask))
-                               return -EINVAL;
-                       if ((err = copy_from_user(&err_mask, optval, optlen)))
-                               return err;
-               }
+               if (optlen != sizeof(err_mask))
+                       return -EINVAL;
+               if ((err = copy_from_user(&err_mask, optval, optlen)))
+                       return err;
 
                err_mask &= CAN_ERR_MASK;
 
@@ -430,11 +428,9 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
                        can_rx_unregister(dev, 0, canraw_sk(sk)->err_mask | CAN_ERR_FLAG, raw_rcv, sk);
 
                /* add new error mask */
-               if (optlen) {
-                       canraw_sk(sk)->err_mask = err_mask;
-                       if (canraw_sk(sk)->err_mask && canraw_sk(sk)->bound)
-                               can_rx_register(dev, 0, canraw_sk(sk)->err_mask | CAN_ERR_FLAG, raw_rcv, sk, IDENT);
-               }
+               canraw_sk(sk)->err_mask = err_mask;
+               if (canraw_sk(sk)->err_mask && canraw_sk(sk)->bound)
+                       can_rx_register(dev, 0, canraw_sk(sk)->err_mask | CAN_ERR_FLAG, raw_rcv, sk, IDENT);
 
                if (dev)
                        dev_put(dev);