Thread (5 messages) 5 messages, 2 authors, 2022-11-17

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help