Re: [PATCH net-next] NFC: nci: Extend virtual NCI deinit test
From: Dmitry Vyukov <dvyukov@google.com>
Date: 2022-11-17 13:47:48
On Thu, 17 Nov 2022 at 13:47, Paolo Abeni [off-list ref] wrote:
On Tue, 2022-11-15 at 10:59 +0100, Dmitry Vyukov wrote:quoted
Extend the test to check the scenario when NCI core tries to send data to already closed device to ensure that nothing bad happens. Signed-off-by: Dmitry Vyukov <dvyukov@google.com> Cc: Bongsu Jeon <bongsu.jeon@samsung.com> Cc: Krzysztof Kozlowski <redacted> Cc: Jakub Kicinski <kuba@kernel.org> Cc: netdev@vger.kernel.org --- tools/testing/selftests/nci/nci_dev.c | 10 ++++++++++ 1 file changed, 10 insertions(+)diff --git a/tools/testing/selftests/nci/nci_dev.c b/tools/testing/selftests/nci/nci_dev.c index 162c41e9bcae8..272958a4ad102 100644 --- a/tools/testing/selftests/nci/nci_dev.c +++ b/tools/testing/selftests/nci/nci_dev.c@@ -888,6 +888,16 @@ TEST_F(NCI, deinit) &msg); ASSERT_EQ(rc, 0); EXPECT_EQ(get_dev_enable_state(&msg), 0); + + // Test that operations that normally send packets to the driver + // don't cause issues when the device is already closed. + // Note: the send of NFC_CMD_DEV_UP itself still succeeds it's just + // that the device won't actually be up. + close(self->virtual_nci_fd); + self->virtual_nci_fd = -1;I think you need to handle correctly negative value of virtual_nci_fd in FIXTURE_TEARDOWN(NCI), otherwise it should trigger an assert on pthread_join() - read() operation will fail in virtual_deinit*()
Hi Paolo, In this test we also set self->open_state = 0. This will make FIXTURE_TEARDOWN(NCI) skip all of the deinit code. It will still do close(self->virtual_nci_fd) w/o checking the return value. So it will be close(-1), which will return an error, but we won't check it.