diff mbox series

selftests: tpm2: Implement class desstructor to close file descriptor

Message ID 20220909152056.1335261-1-stefanb@linux.vnet.ibm.com (mailing list archive)
State Accepted
Commit 2d869f0b458547386fbcd8cf3004b271b7347b7f
Headers show
Series selftests: tpm2: Implement class desstructor to close file descriptor | expand

Commit Message

Stefan Berger Sept. 9, 2022, 3:20 p.m. UTC
From: Stefan Berger <stefanb@linux.ibm.com>

Implement a class destructor to close the open TPM file descriptor
and avoid the following error message:

 test_flush_context (tpm2_tests.SpaceTest) ... \
   /usr/lib64/python3.6/unittest/case.py:605: ResourceWarning: \
   unclosed file <_io.FileIO name='/dev/tpmrm0' mode='rb+' closefd=True>

Fixes: 6ea3dfe1e0732 ("selftests: add TPM 2.0 tests")
Cc: Shuah Khan <shuah@kernel.org>
Cc: linux-kselftest@vger.kernel.org
Cc: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

---
 tools/testing/selftests/tpm2/tpm2.py | 4 ++++
 1 file changed, 4 insertions(+)

Comments

R Nageswara Sastry Sept. 9, 2022, 3:39 p.m. UTC | #1
On 09/09/22 8:50 pm, Stefan Berger wrote:
> From: Stefan Berger <stefanb@linux.ibm.com>
> 
> Implement a class destructor to close the open TPM file descriptor
> and avoid the following error message:
> 
>   test_flush_context (tpm2_tests.SpaceTest) ... \
>     /usr/lib64/python3.6/unittest/case.py:605: ResourceWarning: \
>     unclosed file <_io.FileIO name='/dev/tpmrm0' mode='rb+' closefd=True>
> 
> Fixes: 6ea3dfe1e0732 ("selftests: add TPM 2.0 tests")
> Cc: Shuah Khan <shuah@kernel.org>
> Cc: linux-kselftest@vger.kernel.org
> Cc: Jarkko Sakkinen <jarkko@kernel.org>
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

Tested-by: Nageswara R Sastry <rnsastry@linux.ibm.com>

> 
> ---
>   tools/testing/selftests/tpm2/tpm2.py | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/tools/testing/selftests/tpm2/tpm2.py b/tools/testing/selftests/tpm2/tpm2.py
> index 057a4f49c79d..c7363c6764fc 100644
> --- a/tools/testing/selftests/tpm2/tpm2.py
> +++ b/tools/testing/selftests/tpm2/tpm2.py
> @@ -371,6 +371,10 @@ class Client:
>               fcntl.fcntl(self.tpm, fcntl.F_SETFL, flags)
>               self.tpm_poll = select.poll()
>   
> +    def __del__(self):
> +        if self.tpm:
> +            self.tpm.close()
> +
>       def close(self):
>           self.tpm.close()
>
Jarkko Sakkinen Sept. 20, 2022, 4:31 a.m. UTC | #2
s/desstructor/destructor/

I'd change it to "selftest: tpm2: Add Client.__del__() to close /dev/tpm* handle"

On Fri, Sep 09, 2022 at 11:20:56AM -0400, Stefan Berger wrote:
> From: Stefan Berger <stefanb@linux.ibm.com>
> 
> Implement a class destructor to close the open TPM file descriptor
> and avoid the following error message:
> 
>  test_flush_context (tpm2_tests.SpaceTest) ... \
>    /usr/lib64/python3.6/unittest/case.py:605: ResourceWarning: \
>    unclosed file <_io.FileIO name='/dev/tpmrm0' mode='rb+' closefd=True>

I don't recall seeing this. Does this happen on every test case?

Should better describe what is going on, e.g.

"
The following output can bee seen when the test is executed:

  test_flush_context (tpm2_tests.SpaceTest) ... \
    /usr/lib64/python3.6/unittest/case.py:605: ResourceWarning: \
    unclosed file <_io.FileIO name='/dev/tpmrm0' mode='rb+' closefd=True>

An instance of Client does not implicitly close /dev/tpm* handle, once it
gets destroyed. Close the file handle in the class destructor
Client.__del__().
"

> 
> Fixes: 6ea3dfe1e0732 ("selftests: add TPM 2.0 tests")
> Cc: Shuah Khan <shuah@kernel.org>
> Cc: linux-kselftest@vger.kernel.org
> Cc: Jarkko Sakkinen <jarkko@kernel.org>
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

BR, Jarkko
Stefan Berger Sept. 20, 2022, 1:14 p.m. UTC | #3
On 9/20/22 00:31, Jarkko Sakkinen wrote:

>>
>>   test_flush_context (tpm2_tests.SpaceTest) ... \
>>     /usr/lib64/python3.6/unittest/case.py:605: ResourceWarning: \
>>     unclosed file <_io.FileIO name='/dev/tpmrm0' mode='rb+' closefd=True>
> 
> I don't recall seeing this. Does this happen on every test case?

No, only on that one test case.

    Stefan
diff mbox series

Patch

diff --git a/tools/testing/selftests/tpm2/tpm2.py b/tools/testing/selftests/tpm2/tpm2.py
index 057a4f49c79d..c7363c6764fc 100644
--- a/tools/testing/selftests/tpm2/tpm2.py
+++ b/tools/testing/selftests/tpm2/tpm2.py
@@ -371,6 +371,10 @@  class Client:
             fcntl.fcntl(self.tpm, fcntl.F_SETFL, flags)
             self.tpm_poll = select.poll()
 
+    def __del__(self):
+        if self.tpm:
+            self.tpm.close()
+
     def close(self):
         self.tpm.close()