From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: y2038@lists.linaro.org, linux-kernel@vger.kernel.org,
sparclinux@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
stable@vger.kernel.org, Deepa Dinamani <deepa.kernel@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
linux-input@vger.kernel.org
Subject: Re: [PATCH 8/8] Input: input_event: fix struct padding on sparc64
Date: Mon, 11 Nov 2019 10:28:28 -0800 [thread overview]
Message-ID: <20191111182828.GC57214@dtor-ws> (raw)
In-Reply-To: <20191108203435.112759-9-arnd@arndb.de>
Hi Arnd,
On Fri, Nov 08, 2019 at 09:34:31PM +0100, Arnd Bergmann wrote:
> Going through all uses of timeval, I noticed that we screwed up
> input_event in the previous attempts to fix it:
>
> The time fields now match between kernel and user space, but
> all following fields are in the wrong place.
>
> Add the required padding that is implied by the glibc timeval
> definition to fix the layout, and add explicit initialization
> to avoid leaking kernel stack data.
>
> Cc: sparclinux@vger.kernel.org
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: stable@vger.kernel.org
> Fixes: 141e5dcaa735 ("Input: input_event - fix the CONFIG_SPARC64 mixup")
> Fixes: 2e746942ebac ("Input: input_event - provide override for sparc64")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> drivers/input/evdev.c | 3 +++
> drivers/input/misc/uinput.c | 3 +++
> include/uapi/linux/input.h | 1 +
> 3 files changed, 7 insertions(+)
>
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index d7dd6fcf2db0..24a90793caf0 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -228,6 +228,9 @@ static void __pass_event(struct evdev_client *client,
> event->input_event_sec;
> client->buffer[client->tail].input_event_usec =
> event->input_event_usec;
> +#ifdef CONFIG_SPARC64
> + client->buffer[client->tail].__pad = 0;
> +#endif
> client->buffer[client->tail].type = EV_SYN;
> client->buffer[client->tail].code = SYN_DROPPED;
> client->buffer[client->tail].value = 0;
I do not like ifdefs here, do you think we could write:
client->buffer[client->tail] = (struct input_event) {
.input_event_sec = event->input_event_sec,
.input_event_usec = event->input_event_usec,
.type = EV_SYN,
.code = SYN_DROPPED,
};
to ensure all padded fields are initialized? This is not hot path as we
do not expect queue to overfill too often.
Thanks.
--
Dmitry
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: y2038@lists.linaro.org, linux-kernel@vger.kernel.org,
sparclinux@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
stable@vger.kernel.org, Deepa Dinamani <deepa.kernel@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
linux-input@vger.kernel.org
Subject: Re: [PATCH 8/8] Input: input_event: fix struct padding on sparc64
Date: Mon, 11 Nov 2019 18:28:28 +0000 [thread overview]
Message-ID: <20191111182828.GC57214@dtor-ws> (raw)
In-Reply-To: <20191108203435.112759-9-arnd@arndb.de>
Hi Arnd,
On Fri, Nov 08, 2019 at 09:34:31PM +0100, Arnd Bergmann wrote:
> Going through all uses of timeval, I noticed that we screwed up
> input_event in the previous attempts to fix it:
>
> The time fields now match between kernel and user space, but
> all following fields are in the wrong place.
>
> Add the required padding that is implied by the glibc timeval
> definition to fix the layout, and add explicit initialization
> to avoid leaking kernel stack data.
>
> Cc: sparclinux@vger.kernel.org
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: stable@vger.kernel.org
> Fixes: 141e5dcaa735 ("Input: input_event - fix the CONFIG_SPARC64 mixup")
> Fixes: 2e746942ebac ("Input: input_event - provide override for sparc64")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> drivers/input/evdev.c | 3 +++
> drivers/input/misc/uinput.c | 3 +++
> include/uapi/linux/input.h | 1 +
> 3 files changed, 7 insertions(+)
>
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index d7dd6fcf2db0..24a90793caf0 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -228,6 +228,9 @@ static void __pass_event(struct evdev_client *client,
> event->input_event_sec;
> client->buffer[client->tail].input_event_usec > event->input_event_usec;
> +#ifdef CONFIG_SPARC64
> + client->buffer[client->tail].__pad = 0;
> +#endif
> client->buffer[client->tail].type = EV_SYN;
> client->buffer[client->tail].code = SYN_DROPPED;
> client->buffer[client->tail].value = 0;
I do not like ifdefs here, do you think we could write:
client->buffer[client->tail] = (struct input_event) {
.input_event_sec = event->input_event_sec,
.input_event_usec = event->input_event_usec,
.type = EV_SYN,
.code = SYN_DROPPED,
};
to ensure all padded fields are initialized? This is not hot path as we
do not expect queue to overfill too often.
Thanks.
--
Dmitry
next prev parent reply other threads:[~2019-11-11 18:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-08 20:34 [PATCH 0/8] y2038: bug fixes from y2038 work Arnd Bergmann
2019-11-08 20:34 ` Arnd Bergmann
2019-11-08 20:34 ` Arnd Bergmann
2019-11-08 20:34 ` [PATCH 1/8] y2038: timex: remove incorrect time_t truncation Arnd Bergmann
2019-11-10 20:44 ` Deepa Dinamani
2019-11-12 7:16 ` [tip: timers/urgent] ntp/y2038: Remove " tip-bot2 for Arnd Bergmann
2019-11-08 20:34 ` [PATCH 2/8] timekeeping: optimize ns_to_timespec64 Arnd Bergmann
2019-11-10 20:46 ` Deepa Dinamani
2019-11-12 7:22 ` [tip: timers/core] time: Optimize ns_to_timespec64() tip-bot2 for Arnd Bergmann
2019-11-08 20:34 ` [PATCH 3/8] powerpc: fix vdso32 for ppc64le Arnd Bergmann
2019-11-08 20:34 ` Arnd Bergmann
2019-11-20 19:13 ` [Y2038] " Ben Hutchings
2019-11-20 19:35 ` Arnd Bergmann
2019-11-20 19:35 ` Arnd Bergmann
2019-11-20 21:49 ` Ben Hutchings
2019-11-20 21:49 ` Ben Hutchings
2019-11-21 10:02 ` Arnd Bergmann
2019-11-21 10:02 ` Arnd Bergmann
2019-11-21 15:56 ` Ben Hutchings
2019-11-21 15:56 ` Ben Hutchings
2019-11-08 20:34 ` [PATCH 4/8] ipmi: kill off 'timespec' usage again Arnd Bergmann
2019-11-08 22:11 ` Corey Minyard
2019-11-09 11:23 ` Arnd Bergmann
2019-11-08 20:34 ` [PATCH 5/8] netfilter: xt_time: use time64_t Arnd Bergmann
2019-11-15 22:43 ` Pablo Neira Ayuso
2019-11-08 20:34 ` [PATCH 6/8] lp: fix sparc64 LPSETTIMEOUT ioctl Arnd Bergmann
2019-11-20 19:27 ` [Y2038] " Ben Hutchings
2019-11-20 19:46 ` Arnd Bergmann
2019-11-20 22:10 ` Ben Hutchings
2019-11-21 14:04 ` Arnd Bergmann
2019-11-21 16:00 ` Ben Hutchings
2019-11-08 20:34 ` [PATCH 7/8] ppdev: fix PPGETTIME/PPSETTIME ioctls Arnd Bergmann
2019-11-20 19:29 ` [Y2038] " Ben Hutchings
2019-11-21 14:06 ` Arnd Bergmann
2019-11-08 20:34 ` [PATCH 8/8] Input: input_event: fix struct padding on sparc64 Arnd Bergmann
2019-11-08 20:34 ` Arnd Bergmann
2019-11-11 18:28 ` Dmitry Torokhov [this message]
2019-11-11 18:28 ` Dmitry Torokhov
2019-11-11 19:18 ` Arnd Bergmann
2019-11-11 19:18 ` Arnd Bergmann
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=20191111182828.GC57214@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=arnd@arndb.de \
--cc=davem@davemloft.net \
--cc=deepa.kernel@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=y2038@lists.linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.