Message ID | 20201002082734.13925-1-colyli@suse.de (mailing list archive) |
---|---|
Headers | show |
Series | Introduce sendpage_ok() to detect misused sendpage in network related drivers | expand |
From: Coly Li <colyli@suse.de> Date: Fri, 2 Oct 2020 16:27:27 +0800 > 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. Series applied. > The v10 series has 7 patches, fixes a WARN_ONCE() usage from v9 series, ... I still haven't heard from you how such a fundamental build failure was even possible. If the v9 patch series did not even compile, how in the world did you perform functional testing of these changes? Please explain this to me, instead of just quietly fixing it and posting an updated series. Thank you.
On 2020/10/3 06:28, David Miller wrote: > From: Coly Li <colyli@suse.de> > Date: Fri, 2 Oct 2020 16:27:27 +0800 > >> 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. > > Series applied. > >> The v10 series has 7 patches, fixes a WARN_ONCE() usage from v9 series, > ... > > I still haven't heard from you how such a fundamental build failure > was even possible. > Hi David, Here is the detail steps how I leaked this uncompleted patch to you, 1) Add WARN_ONCE() as WARN_ON() to kernel_sendpage(). Maybe I was still hesitating when I typed WARN_ONCE() on keyboard. 2) Generate the patches, prepare to post 3) Hmm, compiling failed, oh it is WARN_ONCE(). Yeah, WARN_ONCE() might be more informative and better. 4) Modify to use WARN_ONCE() and compile and try, looks fine. 5) Re-generate the patches to overwrite the previous ones. 6) Post the patches. The missing part was, before I post the patches, I should do rebase and commit the change, but (interrupted by other stuffs) it skipped in my mind. Although I regenerated the series but the change was not included. The result was, uncompleted patch posted and the second-half change still stayed in my local file. > If the v9 patch series did not even compile, how in the world did you > perform functional testing of these changes? > Only 0002-net-add-WARN_ONCE-in-kernel_sendpage-for-improper-ze.patch was tested in v9 series, other tests were done in previous versions. > Please explain this to me, instead of just quietly fixing it and > posting an updated series. And not all the patches in the series were tested. Here is the testing coverage of the series: The following ones were tested and verified to break nothing and avoid the mm corruption and panic, 0001-net-introduce-helper-sendpage_ok-in-include-linux-ne.patch 0002-net-add-WARN_ONCE-in-kernel_sendpage-for-improper-ze.patch 0003-nvme-tcp-check-page-by-sendpage_ok-before-calling-ke.patch 0006-scsi-libiscsi-use-sendpage_ok-in-iscsi_tcp_segment_m.patch The following ones were not tested, due to complicated environment setup, 0005-drbd-code-cleanup-by-using-sendpage_ok-to-check-page.patch 0007-libceph-use-sendpage_ok-in-ceph_tcp_sendpage.patch This patch I didn't explicitly test, due to lack of knowledge to modify network code to trigger a buggy condition. It just went with other tested patches, 0004-tcp-use-sendpage_ok-to-detect-misused-.sendpage.patch Back to the built failure, I don't have excuse for leaking this uncompleted version to you. Of cause I will try to avoid to inefficiently occupy maintainer's time by such silly mess up. Thanks for your review and the thorough maintenance. Coly Li
On 2020/10/3 06:28, David Miller wrote: > From: Coly Li <colyli@suse.de> > Date: Fri, 2 Oct 2020 16:27:27 +0800 > >> 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. > > Series applied. > >> The v10 series has 7 patches, fixes a WARN_ONCE() usage from v9 series, > ... > > I still haven't heard from you how such a fundamental build failure > was even possible. > Hi David, Here is the detail steps how I leaked this uncompleted patch to you, 1) Add WARN_ONCE() as WARN_ON() to kernel_sendpage(). Maybe I was still hesitating when I typed WARN_ONCE() on keyboard. 2) Generate the patches, prepare to post 3) Hmm, compiling failed, oh it is WARN_ONCE(). Yeah, WARN_ONCE() might be more informative and better. 4) Modify to use WARN_ONCE() and compile and try, looks fine. 5) Re-generate the patches to overwrite the previous ones. 6) Post the patches. The missing part was, before I post the patches, I should do rebase and commit the change, but (interrupted by other stuffs) it skipped in my mind. Although I regenerated the series but the change was not included. The result was, uncompleted patch posted and the second-half change still stayed in my local file. > If the v9 patch series did not even compile, how in the world did you > perform functional testing of these changes? > Only 0002-net-add-WARN_ONCE-in-kernel_sendpage-for-improper-ze.patch was tested in v9 series, other tests were done in previous versions. > Please explain this to me, instead of just quietly fixing it and > posting an updated series. And not all the patches in the series were tested. Here is the testing coverage of the series: The following ones were tested and verified to break nothing and avoid the mm corruption and panic, 0001-net-introduce-helper-sendpage_ok-in-include-linux-ne.patch 0002-net-add-WARN_ONCE-in-kernel_sendpage-for-improper-ze.patch 0003-nvme-tcp-check-page-by-sendpage_ok-before-calling-ke.patch 0006-scsi-libiscsi-use-sendpage_ok-in-iscsi_tcp_segment_m.patch The following ones were not tested, due to complicated environment setup, 0005-drbd-code-cleanup-by-using-sendpage_ok-to-check-page.patch 0007-libceph-use-sendpage_ok-in-ceph_tcp_sendpage.patch This patch I didn't explicitly test, due to lack of knowledge to modify network code to trigger a buggy condition. It just went with other tested patches, 0004-tcp-use-sendpage_ok-to-detect-misused-.sendpage.patch Back to the built failure, I don't have excuse for leaking this uncompleted version to you. Of cause I will try to avoid to inefficiently occupy maintainer's time by such silly mess up. Thanks for your review and the thorough maintenance. Coly Li