X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=drivers%2Fnet%2Fcan%2Fdev.c;h=a25442ed4e7e37eedaf9ee40966861b5e166ea28;hp=1eac27ff77242253407f756eb683e892909b14e0;hb=0d189b4451f424bdb4296a0c791b9cd731bc317e;hpb=3d8d613420a42dea7c12b990af3e81b98a31e809 diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 1eac27ff7724..a25442ed4e7e 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c @@ -605,10 +605,14 @@ static int can_changelink(struct net_device *dev, if (dev->flags & IFF_UP) return -EBUSY; cm = nla_data(data[IFLA_CAN_CTRLMODE]); - if (cm->flags & ~priv->ctrlmode_supported) + + /* check whether changed bits are allowed to be modified */ + if (cm->mask & ~priv->ctrlmode_supported) return -EOPNOTSUPP; + + /* clear bits to be modified and copy the flag values */ priv->ctrlmode &= ~cm->mask; - priv->ctrlmode |= cm->flags; + priv->ctrlmode |= (cm->flags & cm->mask); } if (data[IFLA_CAN_BITTIMING]) {