Linux-Modules Archive on lore.kernel.org
 help / Atom feed
* [PATCH kmod] util: fix non-static assert_cc use
@ 2017-06-07  6:18 Joel Stanley
  2017-06-07 12:00 ` Joel Stanley
  0 siblings, 1 reply; 4+ messages in thread
From: Joel Stanley @ 2017-06-07  6:18 UTC (permalink / raw)
  To: linux-modules; +Cc: Stewart Smith

In commit a6ede6c7ad46 (util: fix warning of equal values on logical OR)
the runtime check for EAGAIN and EWOULDBLOCK being equal was converted
into an assert.

For the case where the compiler supports _Static_assert, this is can be
called staticly. However the fallback for older compilers uses a
non-static test that needs to be called from a function context.

Move the assert into the functions that used to have the runtime check.
The test does not add any runtime overhead, so it is fine to duplicate
it.

Tested with and without HAVE_STATIC_ASSERT defined using GCC 6.3.

Signed-off-by: Joel Stanley <joel@jms.id.au>
---
 shared/util.c              | 4 ++--
 testsuite/test-testsuite.c | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/shared/util.c b/shared/util.c
index 9de080aabb18..c402953b4699 100644
--- a/shared/util.c
+++ b/shared/util.c
@@ -49,8 +49,6 @@ static const struct kmod_ext {
 	{ }
 };
 
-assert_cc(EAGAIN == EWOULDBLOCK);
-
 /* string handling functions and memory allocations                         */
 /* ************************************************************************ */
 
@@ -200,6 +198,7 @@ ssize_t read_str_safe(int fd, char *buf, size_t buflen)
 {
 	size_t todo = buflen - 1;
 	size_t done = 0;
+	assert_cc(EAGAIN == EWOULDBLOCK);
 
 	do {
 		ssize_t r = read(fd, buf + done, todo);
@@ -225,6 +224,7 @@ ssize_t write_str_safe(int fd, const char *buf, size_t buflen)
 {
 	size_t todo = buflen;
 	size_t done = 0;
+	assert_cc(EAGAIN == EWOULDBLOCK);
 
 	do {
 		ssize_t r = write(fd, buf + done, todo);
diff --git a/testsuite/test-testsuite.c b/testsuite/test-testsuite.c
index 56e73609f204..5bafc6551a23 100644
--- a/testsuite/test-testsuite.c
+++ b/testsuite/test-testsuite.c
@@ -88,6 +88,7 @@ static int testsuite_rootfs_open(const struct test *t)
 {
 	char buf[100];
 	int fd, done;
+	assert_cc(EAGAIN == EWOULDBLOCK);
 
 	fd = open("/lib/modules/a", O_RDONLY);
 	if (fd < 0)
-- 
2.11.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH kmod] util: fix non-static assert_cc use
  2017-06-07  6:18 [PATCH kmod] util: fix non-static assert_cc use Joel Stanley
@ 2017-06-07 12:00 ` Joel Stanley
  2017-06-08 23:08   ` Lucas De Marchi
  0 siblings, 1 reply; 4+ messages in thread
From: Joel Stanley @ 2017-06-07 12:00 UTC (permalink / raw)
  To: linux-modules; +Cc: Stewart Smith, Thomas Petazzoni

On Wed, Jun 7, 2017 at 3:48 PM, Joel Stanley <joel@jms.id.au> wrote:
> In commit a6ede6c7ad46 (util: fix warning of equal values on logical OR)
> the runtime check for EAGAIN and EWOULDBLOCK being equal was converted
> into an assert.
>
> For the case where the compiler supports _Static_assert, this is can be
> called staticly. However the fallback for older compilers uses a
> non-static test that needs to be called from a function context.
>
> Move the assert into the functions that used to have the runtime check.
> The test does not add any runtime overhead, so it is fine to duplicate
> it.
>
> Tested with and without HAVE_STATIC_ASSERT defined using GCC 6.3.
>
> Signed-off-by: Joel Stanley <joel@jms.id.au>

I just saw the git history and noticed that Thomas sent a patch fixing
this already. Excellent! Sorry for the noise.

Cheers,

Joel

> ---
>  shared/util.c              | 4 ++--
>  testsuite/test-testsuite.c | 1 +
>  2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/shared/util.c b/shared/util.c
> index 9de080aabb18..c402953b4699 100644
> --- a/shared/util.c
> +++ b/shared/util.c
> @@ -49,8 +49,6 @@ static const struct kmod_ext {
>         { }
>  };
>
> -assert_cc(EAGAIN == EWOULDBLOCK);
> -
>  /* string handling functions and memory allocations                         */
>  /* ************************************************************************ */
>
> @@ -200,6 +198,7 @@ ssize_t read_str_safe(int fd, char *buf, size_t buflen)
>  {
>         size_t todo = buflen - 1;
>         size_t done = 0;
> +       assert_cc(EAGAIN == EWOULDBLOCK);
>
>         do {
>                 ssize_t r = read(fd, buf + done, todo);
> @@ -225,6 +224,7 @@ ssize_t write_str_safe(int fd, const char *buf, size_t buflen)
>  {
>         size_t todo = buflen;
>         size_t done = 0;
> +       assert_cc(EAGAIN == EWOULDBLOCK);
>
>         do {
>                 ssize_t r = write(fd, buf + done, todo);
> diff --git a/testsuite/test-testsuite.c b/testsuite/test-testsuite.c
> index 56e73609f204..5bafc6551a23 100644
> --- a/testsuite/test-testsuite.c
> +++ b/testsuite/test-testsuite.c
> @@ -88,6 +88,7 @@ static int testsuite_rootfs_open(const struct test *t)
>  {
>         char buf[100];
>         int fd, done;
> +       assert_cc(EAGAIN == EWOULDBLOCK);
>
>         fd = open("/lib/modules/a", O_RDONLY);
>         if (fd < 0)
> --
> 2.11.0
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH kmod] util: fix non-static assert_cc use
  2017-06-07 12:00 ` Joel Stanley
@ 2017-06-08 23:08   ` Lucas De Marchi
  2017-06-09  5:10     ` Joel Stanley
  0 siblings, 1 reply; 4+ messages in thread
From: Lucas De Marchi @ 2017-06-08 23:08 UTC (permalink / raw)
  To: Joel Stanley; +Cc: linux-modules, Stewart Smith, Thomas Petazzoni

On Wed, Jun 7, 2017 at 5:00 AM, Joel Stanley <joel@jms.id.au> wrote:
> On Wed, Jun 7, 2017 at 3:48 PM, Joel Stanley <joel@jms.id.au> wrote:
>> In commit a6ede6c7ad46 (util: fix warning of equal values on logical OR)
>> the runtime check for EAGAIN and EWOULDBLOCK being equal was converted
>> into an assert.
>>
>> For the case where the compiler supports _Static_assert, this is can be
>> called staticly. However the fallback for older compilers uses a
>> non-static test that needs to be called from a function context.
>>
>> Move the assert into the functions that used to have the runtime check.
>> The test does not add any runtime overhead, so it is fine to duplicate
>> it.
>>
>> Tested with and without HAVE_STATIC_ASSERT defined using GCC 6.3.
>>
>> Signed-off-by: Joel Stanley <joel@jms.id.au>
>
> I just saw the git history and noticed that Thomas sent a patch fixing
> this already. Excellent! Sorry for the noise.

So many people using ancient compilers... I must be missing the fun :)

Lucas De Marchi

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH kmod] util: fix non-static assert_cc use
  2017-06-08 23:08   ` Lucas De Marchi
@ 2017-06-09  5:10     ` Joel Stanley
  0 siblings, 0 replies; 4+ messages in thread
From: Joel Stanley @ 2017-06-09  5:10 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: linux-modules, Stewart Smith, Thomas Petazzoni

On Fri, Jun 9, 2017 at 8:38 AM, Lucas De Marchi
<lucas.de.marchi@gmail.com> wrote:
> On Wed, Jun 7, 2017 at 5:00 AM, Joel Stanley <joel@jms.id.au> wrote:
>> On Wed, Jun 7, 2017 at 3:48 PM, Joel Stanley <joel@jms.id.au> wrote:
>>> In commit a6ede6c7ad46 (util: fix warning of equal values on logical OR)
>>> the runtime check for EAGAIN and EWOULDBLOCK being equal was converted
>>> into an assert.
>>>
>>> For the case where the compiler supports _Static_assert, this is can be
>>> called staticly. However the fallback for older compilers uses a
>>> non-static test that needs to be called from a function context.
>>>
>>> Move the assert into the functions that used to have the runtime check.
>>> The test does not add any runtime overhead, so it is fine to duplicate
>>> it.
>>>
>>> Tested with and without HAVE_STATIC_ASSERT defined using GCC 6.3.
>>>
>>> Signed-off-by: Joel Stanley <joel@jms.id.au>
>>
>> I just saw the git history and noticed that Thomas sent a patch fixing
>> this already. Excellent! Sorry for the noise.
>
> So many people using ancient compilers... I must be missing the fun :)

Yeah. Supporting groups that insist on using RHEL6.4 and gcc 4.4 is a
barrel of laughs.

:)

Cheers,

Joel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-07  6:18 [PATCH kmod] util: fix non-static assert_cc use Joel Stanley
2017-06-07 12:00 ` Joel Stanley
2017-06-08 23:08   ` Lucas De Marchi
2017-06-09  5:10     ` Joel Stanley

Linux-Modules Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-modules/0 linux-modules/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-modules linux-modules/ https://lore.kernel.org/linux-modules \
		linux-modules@vger.kernel.org linux-modules@archiver.kernel.org
	public-inbox-index linux-modules


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-modules


AGPL code for this site: git clone https://public-inbox.org/ public-inbox