ceph-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 0/6] Introduce sendpage_ok() to detect misused sendpage in network related drivers
@ 2020-08-18 13:12 Coly Li
  2020-08-18 13:12 ` [PATCH v7 1/6] net: introduce helper sendpage_ok() in include/linux/net.h Coly Li
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Coly Li @ 2020-08-18 13:12 UTC (permalink / raw)
  To: linux-block, linux-nvme, netdev, open-iscsi, linux-scsi, ceph-devel
  Cc: linux-kernel, Coly Li, Chaitanya Kulkarni, Chris Leech,
	Christoph Hellwig, Cong Wang, David S . Miller, Eric Dumazet,
	Hannes Reinecke, Ilya Dryomov, Jan Kara, Jeff Layton, Jens Axboe,
	Lee Duncan, Mike Christie, Mikhail Skorzhinskii, Philipp Reisner,
	Sagi Grimberg, Vasily Averin, Vlastimil Babka

This series was original by a bug fix in nvme-over-tcp driver which only
checked whether a page was allocated from slab allcoator, but forgot to
check its page_count: The page handled by sendpage should be neither a
Slab page nor 0 page_count page.

As Sagi Grimberg suggested, the original fix is refind to a more common
inline routine:
    static inline bool sendpage_ok(struct page *page)
    {
        return  (!PageSlab(page) && page_count(page) >= 1);
    }
If sendpage_ok() returns true, the checking page can be handled by the
zero copy sendpage method in network layer.

The first patch in this series introduces sendpage_ok() in header file
include/linux/net.h, the second patch fixes the page checking issue in
nvme-over-tcp driver, the third patch adds page_count check by using
sendpage_ok() in do_tcp_sendpages() as Eric Dumazet suggested, and all
rested patches just replace existing open coded checks with the inline
sendpage_ok() routine.

Coly Li

Cc: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Cc: Chris Leech <cleech@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Cong Wang <amwang@redhat.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Ilya Dryomov <idryomov@gmail.com>
Cc: Jan Kara <jack@suse.com>
Cc: Jeff Layton <jlayton@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Lee Duncan <lduncan@suse.com>
Cc: Mike Christie <michaelc@cs.wisc.edu>
Cc: Mikhail Skorzhinskii <mskorzhinskiy@solarflare.com>
Cc: Philipp Reisner <philipp.reisner@linbit.com>
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: Vasily Averin <vvs@virtuozzo.com>
Cc: Vlastimil Babka <vbabka@suse.com>
---
Changelog:
v7: remove outer brackets from the return line of sendpage_ok() as
    Eric Dumazet suggested.
v6: fix page check in do_tcp_sendpages(), as Eric Dumazet suggested.
    replace other open coded checks with sendpage_ok() in libceph,
    iscsi drivers.
v5, include linux/mm.h in include/linux/net.h
v4, change sendpage_ok() as an inline helper, and post it as
    separate patch, as Christoph Hellwig suggested.
v3, introduce a more common sendpage_ok() as Sagi Grimberg suggested.
v2, fix typo in patch subject
v1, the initial version. 


Coly Li (6):
  net: introduce helper sendpage_ok() in include/linux/net.h
  nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage()
  tcp: use sendpage_ok() to detect misused .sendpage
  drbd: code cleanup by using sendpage_ok() to check page for
    kernel_sendpage()
  scsi: libiscsi: use sendpage_ok() in iscsi_tcp_segment_map()
  libceph: use sendpage_ok() in ceph_tcp_sendpage()

 drivers/block/drbd/drbd_main.c |  2 +-
 drivers/nvme/host/tcp.c        |  7 +++----
 drivers/scsi/libiscsi_tcp.c    |  2 +-
 include/linux/net.h            | 16 ++++++++++++++++
 net/ceph/messenger.c           |  2 +-
 net/ipv4/tcp.c                 |  3 ++-
 6 files changed, 24 insertions(+), 8 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-09-23  8:45 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-18 13:12 [PATCH v7 0/6] Introduce sendpage_ok() to detect misused sendpage in network related drivers Coly Li
2020-08-18 13:12 ` [PATCH v7 1/6] net: introduce helper sendpage_ok() in include/linux/net.h Coly Li
2020-08-18 16:24   ` Christoph Hellwig
2020-08-18 16:33     ` Coly Li
2020-08-18 19:49       ` Christoph Hellwig
2020-08-19  4:22         ` Coly Li
2020-09-23  8:43           ` Christoph Hellwig
2020-09-23  8:45             ` Coly Li
2020-08-18 13:12 ` [PATCH v7 2/6] nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage() Coly Li
2020-08-18 13:12 ` [PATCH v7 3/6] tcp: use sendpage_ok() to detect misused .sendpage Coly Li
2020-08-18 13:12 ` [PATCH v7 4/6] drbd: code cleanup by using sendpage_ok() to check page for kernel_sendpage() Coly Li
2020-08-18 13:12 ` [PATCH v7 5/6] scsi: libiscsi: use sendpage_ok() in iscsi_tcp_segment_map() Coly Li
2020-08-18 13:12 ` [PATCH v7 6/6] libceph: use sendpage_ok() in ceph_tcp_sendpage() Coly Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).