android_kernel_oneplus_msm8998/drivers/net/ethernet/intel
Roman Gushchin bc16e47f03 igb: don't reuse pages with pfmemalloc flag
Incoming packet is dropped silently by sk_filter(), if the skb was
allocated from pfmemalloc reserves and the corresponding socket is
not marked with the SOCK_MEMALLOC flag.

Igb driver allocates pages for DMA with __skb_alloc_page(), which
calls alloc_pages_node() with the __GFP_MEMALLOC flag. So, in case
of OOM condition, igb can get pages with pfmemalloc flag set.

If an incoming packet hits the pfmemalloc page and is large enough
(small packets are copying into the memory, allocated with
netdev_alloc_skb_ip_align(), so they are not affected), it will be
dropped.

This behavior is ok under high memory pressure, but the problem is
that the igb driver reuses these mapped pages. So, packets are still
dropping even if all memory issues are gone and there is a plenty
of free memory.

In my case, some TCP sessions hang on a small percentage (< 0.1%)
of machines days after OOMs.

Fix this by avoiding reuse of such pages.

Signed-off-by: Roman Gushchin <klamm@yandex-team.ru>
Tested-by: Aaron Brown "aaron.f.brown@intel.com"
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2014-10-30 04:56:52 -07:00
..
e1000 e1000: unset IFF_UNICAST_FLT on WMware 82545EM 2014-10-30 04:47:39 -07:00
e1000e e1000e: Fix TSO with non-accelerated vlans 2014-08-25 17:27:09 -07:00
fm10k fm10k: Add CONFIG_FM10K_VXLAN configuration option 2014-10-16 02:03:39 -07:00
i40e i40e: _MASK vs _SHIFT typo in i40e_handle_mdd_event() 2014-10-25 16:50:56 -04:00
i40evf Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-09-07 21:41:53 -07:00
igb igb: don't reuse pages with pfmemalloc flag 2014-10-30 04:56:52 -07:00
igbvf PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
ixgb PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
ixgbe ixgbe: check for vfs outside of sriov_num_vfs before dereference 2014-10-16 02:21:03 -07:00
ixgbevf ixgbevf: remove useless bd_number from struct ixgbevf_adapter 2014-09-18 02:59:27 -07:00
e100.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
Kconfig fm10k: Add CONFIG_FM10K_VXLAN configuration option 2014-10-16 02:03:39 -07:00
Makefile fm10k: Add skeletal frame for Intel(R) FM10000 Ethernet Switch Host Interface Driver 2014-09-23 03:59:13 -07:00