]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'vnet_le'
authorDavid S. Miller <davem@davemloft.net>
Tue, 16 Dec 2014 16:19:49 +0000 (11:19 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Dec 2014 16:19:49 +0000 (11:19 -0500)
commita57cba2a0608a0df5e48c08c33d7012ca95c40b9
tree1b06c8e579574593753fc613550f00f28a22491a
parent823cafa0c663286691d7659ff2be450a45c0dbd4
parentb50b90f574a5b0a4cc69d67a066ed0eefd627408
Merge branch 'vnet_le'

Michael S. Tsirkin says:

====================
tun/macvtap: TUNSETIFF fixes

Dan Carpenter reported the following:
static checker warning:

drivers/net/tun.c:1694 tun_set_iff()
warn: 0x17100 is larger than 16 bits

drivers/net/tun.c
  1692
  1693          tun->flags = (tun->flags & ~TUN_FEATURES) |
  1694                  (ifr->ifr_flags & TUN_FEATURES);
  1695

It's complaining because the "ifr->ifr_flags" variable is a short
(should it be unsigned?).  The new define:

#define IFF_VNET_LE    0x10000

doesn't fit in two bytes.  Other suspect looking code could be:

return __virtio16_to_cpu(q->flags & IFF_VNET_LE, val);

And that's true: we have run out of IFF flags in tun.

So let's not try to add more: add simple GET/SET ioctls
instead. Easy to test, leads to clear semantics.

Alternatively we'll have to revert the whole thing for 3.19,
but that seems more work as this has dependencies
in other places.

While here, I noticed that macvtap was actually reading
ifreq flags as a 32 bit field.
Fix that up as well.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>