diff --git a/debian/changelog b/debian/changelog index eedf3cae5..a7056bd5c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,7 +38,6 @@ linux (4.19.119-1) UNRELEASED; urgency=medium - virtio-blk: improve virtqueue error to BLK_STS - scsi: smartpqi: fix call trace in device discovery - PCI/ASPM: Allow re-enabling Clock PM - - net: ipv6: add net argument to ip6_dst_lookup_flow - net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup - blktrace: Protect q->blk_trace with RCU - blktrace: fix dereference after null check diff --git a/debian/patches/bugfix/all/net-ipv6-add-net-argument-to-ip6_dst_lookup_flow.patch b/debian/patches/bugfix/all/net-ipv6-add-net-argument-to-ip6_dst_lookup_flow.patch deleted file mode 100644 index 00999c239..000000000 --- a/debian/patches/bugfix/all/net-ipv6-add-net-argument-to-ip6_dst_lookup_flow.patch +++ /dev/null @@ -1,243 +0,0 @@ -From: Sabrina Dubroca -Date: Wed, 4 Dec 2019 15:35:52 +0100 -Subject: net: ipv6: add net argument to ip6_dst_lookup_flow -Origin: https://git.kernel.org/linus/c4e85f73afb6384123e5ef1bba3315b2e3ad031e - -This will be used in the conversion of ipv6_stub to ip6_dst_lookup_flow, -as some modules currently pass a net argument without a socket to -ip6_dst_lookup. This is equivalent to commit 343d60aada5a ("ipv6: change -ipv6_stub_impl.ipv6_dst_lookup to take net argument"). - -Signed-off-by: Sabrina Dubroca -Signed-off-by: David S. Miller -[bwh: Backported to 4.19: adjust context] -Signed-off-by: Ben Hutchings -Signed-off-by: Sasha Levin ---- - include/net/ipv6.h | 2 +- - net/dccp/ipv6.c | 6 +++--- - net/ipv6/af_inet6.c | 2 +- - net/ipv6/datagram.c | 2 +- - net/ipv6/inet6_connection_sock.c | 4 ++-- - net/ipv6/ip6_output.c | 8 ++++---- - net/ipv6/raw.c | 2 +- - net/ipv6/syncookies.c | 2 +- - net/ipv6/tcp_ipv6.c | 4 ++-- - net/l2tp/l2tp_ip6.c | 2 +- - net/sctp/ipv6.c | 4 ++-- - 11 files changed, 19 insertions(+), 19 deletions(-) - -diff --git a/include/net/ipv6.h b/include/net/ipv6.h -index ff33f498c1373..4c2e40882e884 100644 ---- a/include/net/ipv6.h -+++ b/include/net/ipv6.h -@@ -959,7 +959,7 @@ static inline struct sk_buff *ip6_finish_skb(struct sock *sk) - - int ip6_dst_lookup(struct net *net, struct sock *sk, struct dst_entry **dst, - struct flowi6 *fl6); --struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, -+struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *sk, struct flowi6 *fl6, - const struct in6_addr *final_dst); - struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, - const struct in6_addr *final_dst, -diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c -index 58a401e9cf09d..b438bed6749d4 100644 ---- a/net/dccp/ipv6.c -+++ b/net/dccp/ipv6.c -@@ -211,7 +211,7 @@ static int dccp_v6_send_response(const struct sock *sk, struct request_sock *req - final_p = fl6_update_dst(&fl6, rcu_dereference(np->opt), &final); - rcu_read_unlock(); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - err = PTR_ERR(dst); - dst = NULL; -@@ -282,7 +282,7 @@ static void dccp_v6_ctl_send_reset(const struct sock *sk, struct sk_buff *rxskb) - security_skb_classify_flow(rxskb, flowi6_to_flowi(&fl6)); - - /* sk = NULL, but it is safe for now. RST socket required. */ -- dst = ip6_dst_lookup_flow(ctl_sk, &fl6, NULL); -+ dst = ip6_dst_lookup_flow(sock_net(ctl_sk), ctl_sk, &fl6, NULL); - if (!IS_ERR(dst)) { - skb_dst_set(skb, dst); - ip6_xmit(ctl_sk, skb, &fl6, 0, NULL, 0); -@@ -912,7 +912,7 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr, - opt = rcu_dereference_protected(np->opt, lockdep_sock_is_held(sk)); - final_p = fl6_update_dst(&fl6, opt, &final); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - err = PTR_ERR(dst); - goto failure; -diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c -index 79fcd9550fd2e..5db88be8b6ecb 100644 ---- a/net/ipv6/af_inet6.c -+++ b/net/ipv6/af_inet6.c -@@ -740,7 +740,7 @@ int inet6_sk_rebuild_header(struct sock *sk) - &final); - rcu_read_unlock(); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - sk->sk_route_caps = 0; - sk->sk_err_soft = -PTR_ERR(dst); -diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c -index 971a0fdf1fbc3..727f958dd8695 100644 ---- a/net/ipv6/datagram.c -+++ b/net/ipv6/datagram.c -@@ -89,7 +89,7 @@ int ip6_datagram_dst_update(struct sock *sk, bool fix_sk_saddr) - final_p = fl6_update_dst(&fl6, opt, &final); - rcu_read_unlock(); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - err = PTR_ERR(dst); - goto out; -diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c -index 890adadcda16a..92fe9e565da0b 100644 ---- a/net/ipv6/inet6_connection_sock.c -+++ b/net/ipv6/inet6_connection_sock.c -@@ -52,7 +52,7 @@ struct dst_entry *inet6_csk_route_req(const struct sock *sk, - fl6->flowi6_uid = sk->sk_uid; - security_req_classify_flow(req, flowi6_to_flowi(fl6)); - -- dst = ip6_dst_lookup_flow(sk, fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); - if (IS_ERR(dst)) - return NULL; - -@@ -107,7 +107,7 @@ static struct dst_entry *inet6_csk_route_socket(struct sock *sk, - - dst = __inet6_csk_dst_check(sk, np->dst_cookie); - if (!dst) { -- dst = ip6_dst_lookup_flow(sk, fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); - - if (!IS_ERR(dst)) - ip6_dst_store(sk, dst, NULL, NULL); -diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c -index 9886a84c25117..22665e3638ac4 100644 ---- a/net/ipv6/ip6_output.c -+++ b/net/ipv6/ip6_output.c -@@ -1071,19 +1071,19 @@ EXPORT_SYMBOL_GPL(ip6_dst_lookup); - * It returns a valid dst pointer on success, or a pointer encoded - * error code. - */ --struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, -+struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *sk, struct flowi6 *fl6, - const struct in6_addr *final_dst) - { - struct dst_entry *dst = NULL; - int err; - -- err = ip6_dst_lookup_tail(sock_net(sk), sk, &dst, fl6); -+ err = ip6_dst_lookup_tail(net, sk, &dst, fl6); - if (err) - return ERR_PTR(err); - if (final_dst) - fl6->daddr = *final_dst; - -- return xfrm_lookup_route(sock_net(sk), dst, flowi6_to_flowi(fl6), sk, 0); -+ return xfrm_lookup_route(net, dst, flowi6_to_flowi(fl6), sk, 0); - } - EXPORT_SYMBOL_GPL(ip6_dst_lookup_flow); - -@@ -1115,7 +1115,7 @@ struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6, - if (dst) - return dst; - -- dst = ip6_dst_lookup_flow(sk, fl6, final_dst); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_dst); - if (connected && !IS_ERR(dst)) - ip6_sk_dst_store_flow(sk, dst_clone(dst), fl6); - -diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c -index a41156a00dd44..8d19729f85162 100644 ---- a/net/ipv6/raw.c -+++ b/net/ipv6/raw.c -@@ -928,7 +928,7 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) - - fl6.flowlabel = ip6_make_flowinfo(ipc6.tclass, fl6.flowlabel); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - err = PTR_ERR(dst); - goto out; -diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c -index e997141aed8c0..a377be8a9fb44 100644 ---- a/net/ipv6/syncookies.c -+++ b/net/ipv6/syncookies.c -@@ -240,7 +240,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb) - fl6.flowi6_uid = sk->sk_uid; - security_req_classify_flow(req, flowi6_to_flowi(&fl6)); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) - goto out_free; - } -diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index 7b0c2498f461b..2e76ebfdc907d 100644 ---- a/net/ipv6/tcp_ipv6.c -+++ b/net/ipv6/tcp_ipv6.c -@@ -268,7 +268,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, - - security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - err = PTR_ERR(dst); - goto failure; -@@ -885,7 +885,7 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32 - * Underlying function will use this to retrieve the network - * namespace - */ -- dst = ip6_dst_lookup_flow(ctl_sk, &fl6, NULL); -+ dst = ip6_dst_lookup_flow(sock_net(ctl_sk), ctl_sk, &fl6, NULL); - if (!IS_ERR(dst)) { - skb_dst_set(buff, dst); - ip6_xmit(ctl_sk, buff, &fl6, fl6.flowi6_mark, NULL, tclass); -diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c -index 37a69df17cab9..2f28f9910b92e 100644 ---- a/net/l2tp/l2tp_ip6.c -+++ b/net/l2tp/l2tp_ip6.c -@@ -619,7 +619,7 @@ static int l2tp_ip6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) - - fl6.flowlabel = ip6_make_flowinfo(ipc6.tclass, fl6.flowlabel); - -- dst = ip6_dst_lookup_flow(sk, &fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, &fl6, final_p); - if (IS_ERR(dst)) { - err = PTR_ERR(dst); - goto out; -diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c -index 7657194f396e1..736d8ca9821bc 100644 ---- a/net/sctp/ipv6.c -+++ b/net/sctp/ipv6.c -@@ -288,7 +288,7 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr, - final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final); - rcu_read_unlock(); - -- dst = ip6_dst_lookup_flow(sk, fl6, final_p); -+ dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); - if (!asoc || saddr) { - t->dst = dst; - memcpy(fl, &_fl, sizeof(_fl)); -@@ -346,7 +346,7 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr, - fl6->saddr = laddr->a.v6.sin6_addr; - fl6->fl6_sport = laddr->a.v6.sin6_port; - final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final); -- bdst = ip6_dst_lookup_flow(sk, fl6, final_p); -+ bdst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p); - - if (IS_ERR(bdst)) - continue; --- -2.20.1 - diff --git a/debian/patches/series b/debian/patches/series index 88ce1c83a..b7e2c191b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -298,7 +298,6 @@ features/arm/staging-vc04_services-Use-correct-cache-line-size.patch # Security fixes debian/i386-686-pae-pci-set-pci-nobios-by-default.patch debian/ntfs-mark-it-as-broken.patch -bugfix/all/net-ipv6-add-net-argument-to-ip6_dst_lookup_flow.patch bugfix/all/net-ipv6_stub-use-ip6_dst_lookup_flow-instead-of-ip6.patch bugfix/all/blktrace-protect-q-blk_trace-with-rcu.patch bugfix/all/blktrace-fix-dereference-after-null-check.patch