Jason Gunthorpe
9302d7bb0c
sctp: Fix mangled IPv4 addresses on a IPv6 listening socket
...
sctp_v4_map_v6 was subtly writing and reading from members
of a union in a way the clobbered data it needed to read before
it read it.
Zeroing the v6 flowinfo overwrites the v4 sin_addr with 0, meaning
that every place that calls sctp_v4_map_v6 gets ::ffff:0.0.0.0 as the
result.
Reorder things to guarantee correct behaviour no matter what the
union layout is.
This impacts user space clients that open an IPv6 SCTP socket and
receive IPv4 connections. Prior to 299ee user space would see a
sockaddr with AF_INET and a correct address, after 299ee the sockaddr
is AF_INET6, but the address is wrong.
Fixes: 299ee123e1 (sctp: Fixup v4mapped behaviour to comply with Sock API)
Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-05-27 14:15:26 -04:00
..
9p
9p: switch p9_client_read() to passing struct iov_iter *
2015-04-11 22:28:27 -04:00
bluetooth
Bluetooth: Read LE remote features during connection establishment
2015-04-09 08:36:54 +03:00
caif
caif: fix a signedness bug in cfpkt_iterate()
2015-02-20 17:35:14 -05:00
irda
irda: Convert function pointer arrays and uses to const
2014-12-10 15:33:16 -05:00
iucv
netfilter
netfilter: nf_tables: mark stateful expressions
2015-04-13 20:12:31 +02:00
netns
netns: remove BUG_ONs from net_generic()
2015-04-17 15:21:48 -04:00
nfc
nfc: nci: Add comment to explain NCI_HCI_MAX_PIPES
2015-04-06 00:19:05 +02:00
phonet
sctp
sctp: Fix mangled IPv4 addresses on a IPv6 listening socket
2015-05-27 14:15:26 -04:00
tc_act
act_bpf: add initial eBPF support for actions
2015-03-20 19:10:44 -04:00
6lowpan.h
ieee802154: 6lowpan: rename process_data and lowpan_process_data
2014-10-27 15:51:16 +01:00
act_api.h
net_sched: act: refuse to remove bound action outside
2014-02-12 19:23:32 -05:00
addrconf.h
net: ipv6: allow explicitly choosing optimistic addresses
2015-02-05 15:37:41 -08:00
af_ieee802154.h
ieee802154: mac802154: remove FSF address
2014-10-25 08:07:30 +02:00
af_rxrpc.h
af_unix.h
af_vsock.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
ah.h
ipsec: Remove obsolete MAX_AH_AUTH_LEN
2014-09-18 10:54:36 +02:00
arp.h
neigh: Factor out ___neigh_lookup_noref
2015-03-04 00:23:23 -05:00
atmclip.h
ax25.h
ax25: Stop using magic neighbour cache operations.
2015-03-03 14:44:41 -05:00
ax88796.h
bond_3ad.h
bonding: Implement port churn-machine (AD standard 43.4.17).
2015-02-24 16:05:48 -05:00
bond_alb.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bond_options.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bonding.h
net/bonding: Make DRV macros private
2015-04-26 22:59:53 -04:00
busy_poll.h
sched, net: Fixup busy_loop_us_clock()
2014-01-13 17:39:11 +01:00
cfg80211-wext.h
cfg80211.h
cfg80211: move IE split utilities here from mac80211
2015-04-07 13:56:41 +02:00
cfg802154.h
cfg802154: pass name_assign_type to rdev_add_virtual_intf()
2015-04-30 18:48:10 +02:00
checksum.h
net: Fix remcsum in GRO path to not change packet
2015-02-11 15:12:09 -08:00
cipso_ipv4.h
cipso: don't use IPCB() to locate the CIPSO IP option
2015-02-11 14:46:37 -05:00
cls_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
codel.h
codel: fix maxpacket/mtu confusion
2015-05-03 22:17:40 -04:00
compat.h
net: switch importing msghdr from userland to {compat_,}import_iovec()
2015-04-09 00:02:26 -04:00
datalink.h
net: Move prototype declaration to header file include/net/datalink.h from net/ipx/af_ipx.c
2014-02-09 17:32:50 -08:00
dcbevent.h
dcbnl.h
net/dcb: Add IEEE QCN attribute
2015-03-06 21:50:02 -05:00
dn.h
net: Move prototype declaration to header file include/net/dn.h from net/decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dn_dev.h
dn_fib.h
dn_neigh.h
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
dn_nsp.h
dn_route.h
net: Move prototype declaration to appropriate header file from decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dsa.h
net: dsa: Add basic framework to support ndo_fdb functions
2015-03-29 13:23:54 -07:00
dsfield.h
dst.h
xfrm: release dst_orig in case of error in xfrm_lookup()
2015-02-12 07:10:56 +01:00
dst_ops.h
net: Remove protocol from struct dst_ops
2015-03-09 16:06:10 -04:00
esp.h
ethoc.h
net: ethoc: set up MII management bus clock
2014-02-04 20:19:51 -08:00
fib_rules.h
net: Kill hold_net release_net
2015-03-12 14:39:40 -04:00
firewire.h
flow.h
ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif
2014-04-16 15:05:11 -04:00
flow_keys.h
flow_keys: n_proto type should be __be16
2015-02-05 00:40:22 -08:00
flowcache.h
flowcache: Make flow cache name space aware
2014-02-12 07:02:11 +01:00
fou.h
ip_tunnel: Ops registration for secondary encap (fou, gue)
2014-11-12 15:01:35 -05:00
garp.h
gen_stats.h
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
genetlink.h
net: Introduce possible_net_t
2015-03-12 14:39:40 -04:00
geneve.h
openvswitch: Add support for checksums on UDP tunnels.
2015-01-28 23:04:15 -08:00
gre.h
gre: Call gso_make_checksum
2014-06-04 22:46:38 -07:00
gro_cells.h
ip_tunnel: Create percpu gro_cell
2015-01-18 01:56:32 -05:00
gue.h
gue: Protocol constants for remote checksum offload
2014-11-05 16:30:03 -05:00
icmp.h
ieee80211_radiotap.h
mac80211: propagate STBC / LDPC flags to radiotap
2014-02-06 09:34:58 +01:00
ieee802154_netdev.h
ieee802154: rework cca setting
2014-12-19 00:19:23 +01:00
if_inet6.h
ipv6: do retries on stable privacy addresses
2015-03-23 22:12:09 -04:00
inet6_connection_sock.h
inet: get rid of central tcp/dccp listener timer
2015-03-20 12:40:25 -04:00
inet6_hashtables.h
ipv6: get rid of __inet6_hash()
2015-03-18 22:00:35 -04:00
inet_common.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
inet_connection_sock.h
inet: properly align icsk_ca_priv
2015-05-19 11:08:00 -04:00
inet_ecn.h
tunnel: fix RFC number in comment for INET_ECN_decapsulate()
2014-05-07 15:30:52 -04:00
inet_frag.h
percpu_counter: add @gfp to percpu_counter_init()
2014-09-08 09:51:29 +09:00
inet_hashtables.h
inet: get rid of last __inet_hash_connect() argument
2015-03-18 22:00:35 -04:00
inet_sock.h
inet: fix request sock refcounting
2015-03-17 22:02:29 -04:00
inet_timewait_sock.h
tcp/dccp: get rid of central timewait timer
2015-04-13 16:40:05 -04:00
inetpeer.h
tcp: simplify inetpeer_addr_base use
2015-03-31 13:58:35 -04:00
ip.h
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
ip6_checksum.h
net: add gro_compute_pseudo functions
2014-08-24 18:09:23 -07:00
ip6_fib.h
net: fib6: convert cfg metric to u32 outside of table write lock
2015-01-05 22:55:24 -05:00
ip6_route.h
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
ip6_tunnel.h
udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
2015-04-07 15:29:08 -04:00
ip_fib.h
ipv4: FIB Local/MAIN table collapse
2015-03-11 16:22:14 -04:00
ip_tunnels.h
ipip,gre,vti,sit: implement ndo_get_iflink
2015-04-02 14:05:00 -04:00
ip_vs.h
net: Introduce possible_net_t
2015-03-12 14:39:40 -04:00
ipcomp.h
ipconfig.h
ipv6.h
net: remove extra newlines
2015-04-07 22:24:37 -04:00
ipx.h
switch ipxrtr_route_packet() from iovec to msghdr
2014-11-24 04:28:49 -05:00
iw_handler.h
wext: add checked wrappers for adding events/points to streams
2015-02-28 21:31:12 +01:00
lapb.h
lib80211.h
lib80211: remove unused print_ssid()
2014-10-14 02:18:27 +02:00
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc: Make llc_conn_ev_qfyr_t function pointer arrays const
2014-12-10 15:21:24 -05:00
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc: Make llc_sap_action_t function pointer arrays const
2014-12-10 15:21:24 -05:00
llc_sap.h
mac80211.h
mac80211: fix 90 kernel-doc warnings
2015-05-04 12:56:13 +02:00
mac802154.h
mac802154: add description to mac802154 APIs
2015-04-30 18:48:09 +02:00
mip6.h
mld.h
ipv6: mld: answer mldv2 queries with mldv1 reports in mldv1 fallback
2014-09-22 16:23:15 -04:00
mpls.h
openvswitch: Add basic MPLS support to kernel
2014-11-05 23:52:33 -08:00
mrp.h
ndisc.h
neigh: Factor out ___neigh_lookup_noref
2015-03-04 00:23:23 -05:00
neighbour.h
net: neighbour: Add mcast_resolicit to configure the number of multicast resolicitations in PROBE state.
2015-03-20 21:47:40 -04:00
net_namespace.h
net: Introduce possible_net_t
2015-03-12 14:39:40 -04:00
net_ratelimit.h
netevent.h
netlabel.h
netlabel: fix the netlbl_catmap_setlong() dummy function
2014-08-07 20:55:21 -04:00
netlink.h
netlink: implement nla_get_in_addr and nla_get_in6_addr
2015-03-31 13:58:35 -04:00
netprio_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
netrom.h
nexthop.h
nl802154.h
nl802154: introduce support for cca settings
2014-12-19 00:19:23 +01:00
p8022.h
ping.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
pkt_cls.h
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
pkt_sched.h
net: rename vlan_tx_* helpers since "tx" is misleading there
2015-01-13 17:51:08 -05:00
protocol.h
net: Eliminate no_check from protosw
2014-05-23 16:28:53 -04:00
psnap.h
raw.h
rawv6.h
red.h
reciprocal_divide: update/correction of the algorithm
2014-01-21 23:17:20 -08:00
regulatory.h
cfg80211: allow wiphy specific regdomain management
2014-12-17 11:49:55 +01:00
request_sock.h
inet: fix possible panic in reqsk_queue_unlink()
2015-04-24 11:39:15 -04:00
rose.h
route.h
ipv4: per cpu uncached list
2015-01-15 18:26:16 -05:00
rtnetlink.h
rtnetlink: Mark name argument of rtnl_create_link() const
2015-04-10 12:42:40 -07:00
sch_generic.h
net_sched: destroy proto tp when all filters are gone
2015-03-09 15:35:55 -04:00
scm.h
secure_seq.h
inetpeer: get rid of ip_id_count
2014-06-02 11:00:41 -07:00
slhc_vj.h
snmp.h
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
sock.h
Merge branch 'iocb' into for-davem
2015-04-09 00:01:38 -04:00
Space.h
stp.h
switchdev.h
switchdev: kernel-doc cleanup on swithdev ops
2015-03-20 21:36:53 -04:00
tcp.h
tcp: prepare CC get_info() access from getsockopt()
2015-04-29 17:10:38 -04:00
tcp_memcontrol.h
tcp_states.h
inet: add TCP_NEW_SYN_RECV state
2015-03-12 22:58:12 -04:00
timewait_sock.h
transp_v6.h
ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams
2014-01-19 19:53:18 -08:00
tso.h
net: Add a software TSO helper API
2014-05-22 14:57:15 -04:00
udp.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
udp_tunnel.h
udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
2015-04-07 15:29:08 -04:00
udplite.h
net: switch memcpy_fromiovec()/memcpy_fromiovecend() users to copy_from_iter()
2015-02-04 01:34:15 -05:00
vsock_addr.h
vxlan.h
udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
2015-04-07 15:29:08 -04:00
wext.h
wimax.h
net: treewide: Fix typo found in DocBook/networking.xml
2014-09-05 17:35:28 -07:00
x25.h
x25device.h
xfrm.h
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00