[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240515010805.605511-3-xandfury@gmail.com>
Date: Wed, 15 May 2024 01:08:03 +0000
From: Abhinav Saxena <xandfury@...il.com>
To: linux-kselftest@...r.kernel.org,
linux-kernel@...r.kernel.org,
llvm@...ts.linux.dev
Cc: Shuah Khan <shuah@...nel.org>,
Nathan Chancellor <nathan@...nel.org>,
Nick Desaulniers <ndesaulniers@...gle.com>,
Bill Wendling <morbo@...gle.com>,
Justin Stitt <justinstitt@...gle.com>,
Abhinav Saxena <xandfury@...il.com>
Subject: [RFC PATCH 2/4] selftests/binderfs: Update close_prot_errno_disarm macro to do{...}while(false) structure for safety
Enclosing the close_prot_errno_disarm macro in do {...} while (false)
structure could prevent potential bugs and undefined behavior.
Example code:
#define BINDERFUNC(x) f(x); g(x);
if (condition)
BINDERFUNC(x);
When BINDERFUNC(x) expands, g(x) would be executed outside of if
block. Enclosing the macro under do{...}while(false) adds a scope to
the macro, making it safer.
Signed-off-by: Abhinav Saxena <xandfury@...il.com>
---
.../filesystems/binderfs/binderfs_test.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/filesystems/binderfs/binderfs_test.c b/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
index 447ec4296e69..4a149e3d4ba4 100644
--- a/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
+++ b/tools/testing/selftests/filesystems/binderfs/binderfs_test.c
@@ -28,13 +28,15 @@
#define PTR_TO_INT(p) ((int)((intptr_t)(p)))
#define INT_TO_PTR(u) ((void *)((intptr_t)(u)))
-#define close_prot_errno_disarm(fd) \
- if (fd >= 0) { \
- int _e_ = errno; \
- close(fd); \
- errno = _e_; \
- fd = -EBADF; \
- }
+#define close_prot_errno_disarm(fd) \
+ do { \
+ if (fd >= 0) { \
+ int _e_ = errno; \
+ close(fd); \
+ errno = _e_; \
+ fd = -EBADF; \
+ } \
+ } while (false)
static void change_mountns(struct __test_metadata *_metadata)
{
--
2.34.1
Powered by blists - more mailing lists