ceph-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 0/7] Introduce sendpage_ok() to detect misused sendpage in network related drivers
@ 2020-10-01  7:54 Coly Li
  2020-10-01  7:54 ` [PATCH v9 1/7] net: introduce helper sendpage_ok() in include/linux/net.h Coly Li
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: Coly Li @ 2020-10-01  7:54 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
concrete zero-copy sendpage method in network layer.

The v9 series has 7 patches, no change from v8 series,
- The 1st patch in this series introduces sendpage_ok() in header file
  include/linux/net.h.
- The 2nd patch adds WARN_ONCE() for improper zero-copy send in
  kernel_sendpage().
- The 3rd patch fixes the page checking issue in nvme-over-tcp driver.
- The 4th patch adds page_count check by using sendpage_ok() in
  do_tcp_sendpages() as Eric Dumazet suggested.
- The 5th and 6th 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:
v9, fix a typo pointed out by Greg KH.
    add Acked-by tags from Martin K. Petersen and Ilya Dryomov.
v8: add WARN_ONCE() in kernel_sendpage() as Christoph suggested.
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 (7):
  net: introduce helper sendpage_ok() in include/linux/net.h
  net: add WARN_ONCE in kernel_sendpage() for improper zero-copy send
  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 ++-
 net/socket.c                   |  6 ++++--
 7 files changed, 28 insertions(+), 10 deletions(-)

-- 
2.26.2


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

end of thread, other threads:[~2020-10-02 22:29 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-01  7:54 [PATCH v9 0/7] Introduce sendpage_ok() to detect misused sendpage in network related drivers Coly Li
2020-10-01  7:54 ` [PATCH v9 1/7] net: introduce helper sendpage_ok() in include/linux/net.h Coly Li
2020-10-01  7:54 ` [PATCH v9 2/7] net: add WARN_ONCE in kernel_sendpage() for improper zero-copy send Coly Li
2020-10-01  7:54 ` [PATCH v9 3/7] nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage() Coly Li
2020-10-01  7:54 ` [PATCH v9 4/7] tcp: use sendpage_ok() to detect misused .sendpage Coly Li
2020-10-01  7:54 ` [PATCH v9 5/7] drbd: code cleanup by using sendpage_ok() to check page for kernel_sendpage() Coly Li
2020-10-01  7:54 ` [PATCH v9 6/7] scsi: libiscsi: use sendpage_ok() in iscsi_tcp_segment_map() Coly Li
2020-10-01 16:10   ` Lee Duncan
2020-10-01  7:54 ` [PATCH v9 7/7] libceph: use sendpage_ok() in ceph_tcp_sendpage() Coly Li
2020-10-01 19:43 ` [PATCH v9 0/7] Introduce sendpage_ok() to detect misused sendpage in network related drivers David Miller
2020-10-01 19:48   ` David Miller
2020-10-02  8:30     ` Coly Li
2020-10-02 22:29       ` David Miller

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).