From: Ammar Faizi <ammarfaizi2@gnuweeb.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: Ammar Faizi <ammarfaizi2@gnuweeb.org>,
Pavel Begunkov <asml.silence@gmail.com>,
"Fernanda Ma'rouf" <fernandafmr12@gnuweeb.org>,
Hao Xu <howeyxu@tencent.com>,
Alviro Iskandar Setiawan <alviro.iskandar@gnuweeb.org>,
io-uring Mailing List <io-uring@vger.kernel.org>,
GNU/Weeb Mailing List <gwml@vger.gnuweeb.org>
Subject: [RFC PATCH v1 0/5] Ensure io_uring data structure consistentcy in liburing
Date: Mon, 6 Jun 2022 13:12:04 +0700 [thread overview]
Message-ID: <20220606061209.335709-1-ammarfaizi2@gnuweeb.org> (raw)
Hi,
This is an RFC for liburing-2.3.
## Introduction:
This series adds compile time assertions for liburing. They are taken
from the io_uring source in the kernel tree. The point of this series
is to make sure the shared struct is consistent between the kernel
space and user space.
## Implementation detail:
We use `static_assert()` macro from <assert.h> that can yield compile
error if the expression given to it evaluates to false. This way we
can create a `BUILD_BUG_ON()` macro that we usually use inside the
kernel. The assertions are placed inside a header file named
build_assert.h, this header is included via compile flag `-include`
when compiling the core liburing sources.
## How to maintain this?
This is pretty much easy to maintain, we just need to sync the
`BUILD_BUG_ON()` macro calls that check the shared struct from
io_uring. See patch #5 for detail.
## Patches summary:
- Patch 1 is just a small code style cleanup.
- Patch 2 is to add BUILD_BUG_ON() macro.
- Patch 3 is to add sizeof_field() macro.
- Patch 4 is to avoid macro redefinition warnings.
- Patch 5 is the main part, it adds io_uring data structure
assertions.
Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
---
Ammar Faizi (5):
lib: Don't indent in `#ifdef -> #define -> #endif` block
lib: Add `BUILD_BUG_ON()` macro
lib: Add `sizeof_field()` macro
Avoid macro redefinition warnings
Add io_uring data structure build assertion
src/Makefile | 3 ++-
src/build_assert.h | 57 ++++++++++++++++++++++++++++++++++++++++++++++
src/lib.h | 18 +++++++++++----
src/queue.c | 2 ++
src/register.c | 2 ++
src/setup.c | 2 ++
src/syscall.c | 2 ++
7 files changed, 80 insertions(+), 6 deletions(-)
create mode 100644 src/build_assert.h
base-commit: 4633a2d0fe9bd1f3dbb5b6d2788a08a264803146
--
Ammar Faizi
next reply other threads:[~2022-06-06 6:12 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-06 6:12 Ammar Faizi [this message]
2022-06-06 6:12 ` [RFC PATCH v1 1/5] lib: Don't indent in `#ifdef -> #define -> #endif` block Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 2/5] lib: Add `BUILD_BUG_ON()` macro Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 3/5] lib: Add `sizeof_field()` macro Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 4/5] Avoid macro redefinition warnings Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 5/5] Add io_uring data structure build assertion Ammar Faizi
2022-06-06 11:51 ` Pavel Begunkov
2022-06-06 8:03 ` [RFC PATCH v1 0/5] Ensure io_uring data structure consistentcy in liburing Hao Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220606061209.335709-1-ammarfaizi2@gnuweeb.org \
--to=ammarfaizi2@gnuweeb.org \
--cc=alviro.iskandar@gnuweeb.org \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=fernandafmr12@gnuweeb.org \
--cc=gwml@vger.gnuweeb.org \
--cc=howeyxu@tencent.com \
--cc=io-uring@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox