linux/drivers/net
Arnd Bergmann e725a66c02 farsync: fix off-by-one bug in fst_add_one
gcc-6 finds an out of bounds access in the fst_add_one function
when calculating the end of the mmio area:

drivers/net/wan/farsync.c: In function 'fst_add_one':
drivers/net/wan/farsync.c:418:53: error: index 2 denotes an offset greater than size of 'u8[2][8192] {aka unsigned char[2][8192]}' [-Werror=array-bounds]
 #define BUF_OFFSET(X)   (BFM_BASE + offsetof(struct buf_window, X))
                                                     ^
include/linux/compiler-gcc.h:158:21: note: in definition of macro '__compiler_offsetof'
  __builtin_offsetof(a, b)
                     ^
drivers/net/wan/farsync.c:418:37: note: in expansion of macro 'offsetof'
 #define BUF_OFFSET(X)   (BFM_BASE + offsetof(struct buf_window, X))
                                     ^~~~~~~~
drivers/net/wan/farsync.c:2519:36: note: in expansion of macro 'BUF_OFFSET'
                                  + BUF_OFFSET ( txBuffer[i][NUM_TX_BUFFER][0]);
                                    ^~~~~~~~~~

The warning is correct, but not critical because this appears
to be a write-only variable that is set by each WAN driver but
never accessed afterwards.

I'm taking the minimal fix here, using the correct pointer by
pointing 'mem_end' to the last byte inside of the register area
as all other WAN drivers do, rather than the first byte outside of
it. An alternative would be to just remove the mem_end member
entirely.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-03-14 13:09:49 -04:00
..
appletalk
arcnet
bonding net: bonding: use __ethtool_get_ksettings 2016-02-25 22:06:46 -05:00
caif
can can: rcar_can: Add r8a7795 support 2016-03-10 10:30:21 +01:00
cris
dsa net: dsa: mv88e6xxx: avoid writing the same mode 2016-03-10 16:10:31 -05:00
ethernet mlx4: add missing braces in verify_qp_parameters 2016-03-14 13:09:49 -04:00
fddi
fjes
hamradio
hippi
hyperv hv_netvsc: Move subchannel waiting to rndis_filter_device_remove() 2016-03-07 15:37:50 -05:00
ieee802154 mrf24j40: add writeable missing reg 2016-02-23 20:29:40 +01:00
ipvlan net: ipvlan: use __ethtool_get_ksettings 2016-02-25 22:06:46 -05:00
irda
phy at803x: fix suspend/resume for SGMII link 2016-03-13 22:37:08 -04:00
plip
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
slip
team net: team: use __ethtool_get_ksettings 2016-02-25 22:06:46 -05:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
vmxnet3 vmxnet3: avoid calling pskb_may_pull with interrupts disabled 2016-03-07 15:15:24 -05:00
wan farsync: fix off-by-one bug in fst_add_one 2016-03-14 13:09:49 -04:00
wimax
wireless rtl8xxxu: Temporarily disable 8192eu device init 2016-03-10 15:29:21 +02:00
xen-netback xen-netback: reduce log spam 2016-03-13 22:08:01 -04:00
dummy.c
eql.c
geneve.c gro: Defer clearing of flush bit in tunnel paths 2016-03-13 15:01:00 -04:00
ifb.c
Kconfig macsec: introduce IEEE 802.1AE driver 2016-03-13 22:40:24 -04:00
LICENSE.SRC
loopback.c
macsec.c macsec: introduce IEEE 802.1AE driver 2016-03-13 22:40:24 -04:00
macvlan.c net: macvlan: use __ethtool_get_ksettings 2016-02-25 22:06:46 -05:00
macvtap.c macvtap: always pass ethernet header in linear 2016-03-11 14:45:21 -05:00
Makefile macsec: introduce IEEE 802.1AE driver 2016-03-13 22:40:24 -04:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c net/tun: implement ndo_set_rx_headroom 2016-03-01 15:54:30 -05:00
veth.c veth: implement ndo_set_rx_headroom 2016-03-01 15:54:31 -05:00
virtio_net.c
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
vxlan.c gro: Defer clearing of flush bit in tunnel paths 2016-03-13 15:01:00 -04:00
xen-netfront.c