summaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp.c
diff options
context:
space:
mode:
authorColy Li <colyli@suse.de>2020-10-02 16:27:30 +0800
committerDavid S. Miller <davem@davemloft.net>2020-10-02 15:27:08 -0700
commit7d4194abfc4de13a2663c7fee6891de8360f7a52 (patch)
treefcc6606cddccf6b70b1a1a8928c56242221e815b /net/ipv4/tcp.c
parent7b62d31d3f399079e7de7cc43e85d6481170970a (diff)
downloadlinux-7d4194abfc4de13a2663c7fee6891de8360f7a52.tar.gz
linux-7d4194abfc4de13a2663c7fee6891de8360f7a52.tar.bz2
linux-7d4194abfc4de13a2663c7fee6891de8360f7a52.zip
nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage()
Currently nvme_tcp_try_send_data() doesn't use kernel_sendpage() to send slab pages. But for pages allocated by __get_free_pages() without __GFP_COMP, which also have refcount as 0, they are still sent by kernel_sendpage() to remote end, this is problematic. The new introduced helper sendpage_ok() checks both PageSlab tag and page_count counter, and returns true if the checking page is OK to be sent by kernel_sendpage(). This patch fixes the page checking issue of nvme_tcp_try_send_data() with sendpage_ok(). If sendpage_ok() returns true, send this page by kernel_sendpage(), otherwise use sock_no_sendpage to handle this page. Signed-off-by: Coly Li <colyli@suse.de> Cc: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.de> Cc: Jan Kara <jack@suse.com> Cc: Jens Axboe <axboe@kernel.dk> Cc: Mikhail Skorzhinskii <mskorzhinskiy@solarflare.com> Cc: Philipp Reisner <philipp.reisner@linbit.com> Cc: Sagi Grimberg <sagi@grimberg.me> Cc: Vlastimil Babka <vbabka@suse.com> Cc: stable@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp.c')
0 files changed, 0 insertions, 0 deletions