Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1254801

[PATCH 4.1 06/46] net: add pfmemalloc check in sk_add_backlog()

From Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Newsgroups linux.kernel
Subject [PATCH 4.1 06/46] net: add pfmemalloc check in sk_add_backlog()
Date 2015-10-23 20:10 +0200
Message-ID <qmOWT-DI-47@gated-at.bofh.it> (permalink)
References <qmONc-d5-11@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


4.1-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit c7c49b8fde26b74277188bdc6c9dca38db6fa35b ]

Greg reported crashes hitting the following check in __sk_backlog_rcv()

	BUG_ON(!sock_flag(sk, SOCK_MEMALLOC));

The pfmemalloc bit is currently checked in sk_filter().

This works correctly for TCP, because sk_filter() is ran in
tcp_v[46]_rcv() before hitting the prequeue or backlog checks.

For UDP or other protocols, this does not work, because the sk_filter()
is ran from sock_queue_rcv_skb(), which might be called _after_ backlog
queuing if socket is owned by user by the time packet is processed by
softirq handler.

Fixes: b4b9e35585089 ("netvm: set PF_MEMALLOC as appropriate during SKB processing")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Greg Thelen <gthelen@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/net/sock.h |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -826,6 +826,14 @@ static inline __must_check int sk_add_ba
 	if (sk_rcvqueues_full(sk, limit))
 		return -ENOBUFS;
 
+	/*
+	 * If the skb was allocated from pfmemalloc reserves, only
+	 * allow SOCK_MEMALLOC sockets to use it as this socket is
+	 * helping free memory
+	 */
+	if (skb_pfmemalloc(skb) && !sock_flag(sk, SOCK_MEMALLOC))
+		return -ENOMEM;
+
 	__sk_add_backlog(sk, skb);
 	sk->sk_backlog.len += skb->truesize;
 	return 0;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 4.1 00/46] 4.1.12-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 05/46] inet: fix races in reqsk_queue_hash_req() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 06/46] net: add pfmemalloc check in sk_add_backlog() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 04/46] skbuff: Fix skb checksum partial check. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 02/46] l2tp: protect tunnel->del_work by ref_count Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 16/46] af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 30/46] i2c: designware-platdrv: enable RuntimePM before registering to the core Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 29/46] i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 34/46] drm/radeon: attach tile property to mst connector Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 17/46] net/unix: fix logic about sk_peek_offset Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 32/46] drm/nouveau/fbcon: take runpm reference when userspace has an open fd Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 09/46] bpf: fix panic in SO_GET_FILTER with native ebpf programs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 27/46] i2c: rcar: enable RuntimePM before registering to the core Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 31/46] workqueue: make sure delayed work run in local cpu Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
  [PATCH 4.1 39/46] sched/preempt: Fix cond_resched_lock() and cond_resched_softirq() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-23 20:10 +0200
    Re: [PATCH 4.1 39/46] sched/preempt: Fix cond_resched_lock() and  cond_resched_softirq() Thomas Backlund <backlund.thomas@gmail.com> - 2015-10-23 22:20 +0200
      Re: [PATCH 4.1 39/46] sched/preempt: Fix cond_resched_lock() and  cond_resched_softirq() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-24 01:30 +0200
  Re: [PATCH 4.1 00/46] 4.1.12-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2015-10-23 22:40 +0200
    Re: [PATCH 4.1 00/46] 4.1.12-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-24 01:30 +0200
      Re: [PATCH 4.1 00/46] 4.1.12-stable review Guenter Roeck <linux@roeck-us.net> - 2015-10-24 03:20 +0200
  Re: [PATCH 4.1 00/46] 4.1.12-stable review Guenter Roeck <linux@roeck-us.net> - 2015-10-24 05:20 +0200
    Re: [PATCH 4.1 00/46] 4.1.12-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-10-24 15:30 +0200

csiph-web