commit:     f2b7897598ade571e055da4ea58e25340c259a0d
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 27 18:16:15 2021 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Apr 27 18:16:15 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f2b78975

sys-apps/systemd: fix rfkill with linux-headers-5.12

Closes: https://bugs.gentoo.org/785955
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 sys-apps/systemd/files/248-rfkill.patch | 35 +++++++++++++++++++++++++++++++++
 sys-apps/systemd/systemd-248.ebuild     |  1 +
 2 files changed, 36 insertions(+)

diff --git a/sys-apps/systemd/files/248-rfkill.patch 
b/sys-apps/systemd/files/248-rfkill.patch
new file mode 100644
index 00000000000..12250870435
--- /dev/null
+++ b/sys-apps/systemd/files/248-rfkill.patch
@@ -0,0 +1,35 @@
+From ab1aa6368a883bce88e3162fee2bea14aacedf23 Mon Sep 17 00:00:00 2001
+From: Luca Boccassi <luca.bocca...@microsoft.com>
+Date: Tue, 13 Apr 2021 13:17:53 +0100
+Subject: [PATCH] rfkill: add some casts to silence -Werror=sign-compare
+
+---
+ src/rfkill/rfkill.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c
+index e2d1a1be5fa..bff1a2886be 100644
+--- a/src/rfkill/rfkill.c
++++ b/src/rfkill/rfkill.c
+@@ -177,7 +177,7 @@ static int load_state(Context *c, const struct 
rfkill_event *event) {
+         ssize_t l = write(c->rfkill_fd, &we, sizeof we);
+         if (l < 0)
+                 return log_error_errno(errno, "Failed to restore rfkill state 
for %i: %m", event->idx);
+-        if (l < RFKILL_EVENT_SIZE_V1)
++        if ((size_t)l < RFKILL_EVENT_SIZE_V1) /* l cannot be < 0 here. Cast 
to fix -Werror=sign-compare */
+                 return log_error_errno(SYNTHETIC_ERRNO(EIO),
+                                        "Couldn't write rfkill event 
structure, too short (wrote %zd of %zu bytes).",
+                                        l, sizeof we);
+@@ -335,9 +335,9 @@ static int run(int argc, char *argv[]) {
+                         break;
+                 }
+ 
+-                if (l < RFKILL_EVENT_SIZE_V1)
+-                        return log_error_errno(SYNTHETIC_ERRNO(EIO), "Short 
read of struct rfkill_event: (%zd < %d)",
+-                                               l, RFKILL_EVENT_SIZE_V1);
++                if ((size_t)l < RFKILL_EVENT_SIZE_V1) /* l cannot be < 0 
here. Cast to fix -Werror=sign-compare */
++                        return log_error_errno(SYNTHETIC_ERRNO(EIO), "Short 
read of struct rfkill_event: (%zd < %zu)",
++                                               l, (size_t) 
RFKILL_EVENT_SIZE_V1); /* Casting necessary to make compiling with different 
kernel versions happy */
+                 log_debug("Reading struct rfkill_event: got %zd bytes.", l);
+ 
+                 /* The event structure has more fields. We only care about 
the first few, so it's OK if we

diff --git a/sys-apps/systemd/systemd-248.ebuild 
b/sys-apps/systemd/systemd-248.ebuild
index 1c671060823..3f21eb06853 100644
--- a/sys-apps/systemd/systemd-248.ebuild
+++ b/sys-apps/systemd/systemd-248.ebuild
@@ -214,6 +214,7 @@ src_prepare() {
 
        # Add local patches here
        PATCHES+=(
+               "${FILESDIR}/248-rfkill.patch"
        )
 
        if ! use vanilla; then

Reply via email to