git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
can: dev: fix crtlmode_supported check
[pandora-kernel.git]
/
drivers
/
net
/
can
/
dev.c
diff --git
a/drivers/net/can/dev.c
b/drivers/net/can/dev.c
index
3ec8f6f
..
847c1f8
100644
(file)
--- a/
drivers/net/can/dev.c
+++ b/
drivers/net/can/dev.c
@@
-807,10
+807,14
@@
static int can_changelink(struct net_device *dev,
if (dev->flags & IFF_UP)
return -EBUSY;
cm = nla_data(data[IFLA_CAN_CTRLMODE]);
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;
return -EOPNOTSUPP;
+
+ /* clear bits to be modified and copy the flag values */
priv->ctrlmode &= ~cm->mask;
priv->ctrlmode &= ~cm->mask;
- priv->ctrlmode |=
cm->flags
;
+ priv->ctrlmode |=
(cm->flags & cm->mask)
;
/* CAN_CTRLMODE_FD can only be set when driver supports FD */
if (priv->ctrlmode & CAN_CTRLMODE_FD)
/* CAN_CTRLMODE_FD can only be set when driver supports FD */
if (priv->ctrlmode & CAN_CTRLMODE_FD)