From patchwork Fri Nov 8 20:34:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 178960 Delivered-To: patch@linaro.org Received: by 2002:a92:38d5:0:0:0:0:0 with SMTP id g82csp3247091ilf; Fri, 8 Nov 2019 12:38:00 -0800 (PST) X-Google-Smtp-Source: APXvYqzdrxmvjG/9eWeY757eXYWrSDt8GSEJ5zkAFdJb6utS04M0vQy47XOVRKJThQALWJatNa1V X-Received: by 2002:a17:906:3919:: with SMTP id f25mr11064427eje.210.1573245480617; Fri, 08 Nov 2019 12:38:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573245480; cv=none; d=google.com; s=arc-20160816; b=pBZdUDv+CCR5Dzu0ead44OboiMKlm4A92yHBmkit1GXHV+b+cs2B2PII5keHNdDzYK cN5cABVgPbXtLK4XjvD/5s7LjfO7pjs5t3L1G1faSti4sEBhegRnT9sdtGV2AqwCNkNQ gFRid7lCVAPjcqp/JRpCoHf8ImzqMIcZmmxsoOz/WRV4CxNO86gFphYliUBx0sGKaVBP BnZom4GtI1iCRKyYJWKCcmHq83kFKXTC2yqZAu9OvJfvTIWxE0NCss3X+U1FIuF6JSzr aTyEzkHPJqeG1wH58NoKMsd7rKcJ0fJ0mrimj3C+gQVsDT7og8v3Df+hcSrHTuRzRtkT mZJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9vTRCY+V2oSE4ICSTrqyMW7MOIovBv5r+EIwT38a0eo=; b=Gmeny1hR7ijOKuKjIW/v5rUt3vYz0gfPtQmOj1sAzN6NZwudIm9K0yEKaO8vEnZxJM iLfeCtB4AOH7jTQ1n9NuqusMgRBskt4pekSFvIgr5szaXdZTB70yq9AwGIJRpVcNRGrP SeJI1XKDIRJosgfDqkjDSFZPURIoN2aq8UtDPnbDMrCt51X9o1hI6PSoVl5dntc1af4R YBoqpH3Mfkv7lsnWIly3ccYMoABQUtez3eChsvnIm8NdF5PWXog6gV2L/cGFlngzpMxE oE3FHxvtYoBtGFhuUyzY03pSOK4e4u7GJsh3gpMwvUwif7dmlwGHG0RZi7ZIc6W9uCB6 V6tQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 17si4442236ejt.419.2019.11.08.12.38.00; Fri, 08 Nov 2019 12:38:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729617AbfKHUh7 (ORCPT + 14 others); Fri, 8 Nov 2019 15:37:59 -0500 Received: from mout.kundenserver.de ([212.227.17.24]:60679 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726349AbfKHUh7 (ORCPT ); Fri, 8 Nov 2019 15:37:59 -0500 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1M9Evp-1iWjmN29CR-006RBe; Fri, 08 Nov 2019 21:37:48 +0100 From: Arnd Bergmann To: y2038@lists.linaro.org, Dmitry Torokhov Cc: linux-kernel@vger.kernel.org, Arnd Bergmann , sparclinux@vger.kernel.org, "David S. Miller" , stable@vger.kernel.org, Deepa Dinamani , Thomas Gleixner , linux-input@vger.kernel.org Subject: [PATCH 8/8] Input: input_event: fix struct padding on sparc64 Date: Fri, 8 Nov 2019 21:34:31 +0100 Message-Id: <20191108203435.112759-9-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20191108203435.112759-1-arnd@arndb.de> References: <20191108203435.112759-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:u6kVp9UKD+j5V6nf6JiBnsKaa0LcdKVi2XG79PhwgluwxaPn537 JqX1+w4EzLmlGXpLjxX9AvVL+FsYlf7H6657Eapb17jd5kmqUqyaJHFBxnMPnUd4juxe6KT gRpRzLHS22sv0vGG9873r88aFqFY8GB1dGUaJUbh67CrdY3MMA9TlE3CGVC1wvOspK+YRBE tWERzIcvD8mD0C9zkhlRQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:QoQHUljkwik=:jlY4L3FT8f0wD8u1XiFw7Z h3+AyZXRuq5c8ebfbAH/dp8y2Q5jMb+GbbhsPaEA2a7MPF1PF/N8JuK+q2AFFRuQJcHecE6M2 wyIrgZ4fyGSpTREXcdY8PDWuk/NtBKzZuKkXyHreMWKYQub8/FI5mePtE7aORk/e14hj/mB2O ERwQFQyraRgE7aYwcH5d4B5CZX+k89/xrvFv2kNZc5Z5PmRNkIN/dfMDxpD9aNji++3uKGg5K AgkohYYZmv9XNXkwL4dC3iSCaEca5btoxk2/9tcBUUVMJRhDwgL0bAJpyaGLxrp9+H3ktoABj aUtYxzpSgzDnIhxNLyYgM00SIurLlTKQ2fzkQaOvqxXIi4CAcyLH1rfiJPGo+GCK3zdNV0Qbk 1tWSII8WsC8sUNoRFhra6Om83Cthg66/7Lsnsvg7fKe3SlHkJpiJBzCxl3eSI/6XAkKG9OWWc owcuBuy3UuodiSTwazfxz3NQMGzvnKY+wGFVxuEYPPkJ6JHrVYCd+5k4SnScsgSHJmg3p/yzv mApihJBs6/Xj8PCPN688hICGCI4M/ldYU4qdniL17PGVFqVE6QB7E1cu1mOVvvgYUsudeZtcg b9b0JX0eKZAb1NfjT445ZS3XzyifaRdVy4gi/coV2v9AHQP8DkYepKymu7sYuKjOSP7D/Z9/v f5+XK1Qa4rLaE+NmzvrJxEItcA6IKiB814x53Xq2UjTXCL767wY+LuxXdNdewEwAcjaf+9AqF 4iTvqs2QG0ugID76PJtSFqafr2c+sFqAflhL5Rc1RDkBWSQEUKPY3LJtUvVXP/CWSb0K3R14B Z3HQVxs+9OTO5jfMMLic3qWm8pn596v8xSot4nX0YnaO5nZSRxY4d0rIjcHMmLjGXxEqFG4m9 uUXYlF7efhWsZ7UEubSA== Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org 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" 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 --- drivers/input/evdev.c | 3 +++ drivers/input/misc/uinput.c | 3 +++ include/uapi/linux/input.h | 1 + 3 files changed, 7 insertions(+) -- 2.20.0 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; diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c index 84051f20b18a..1d8c09e9fd47 100644 --- a/drivers/input/misc/uinput.c +++ b/drivers/input/misc/uinput.c @@ -80,6 +80,9 @@ static int uinput_dev_event(struct input_dev *dev, ktime_get_ts64(&ts); udev->buff[udev->head].input_event_sec = ts.tv_sec; udev->buff[udev->head].input_event_usec = ts.tv_nsec / NSEC_PER_USEC; +#ifdef CONFIG_SPARC64 + udev->buff[udev->head].__pad = 0; +#endif udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE; wake_up_interruptible(&udev->waitq); diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h index f056b2a00d5c..9a61c28ed3ae 100644 --- a/include/uapi/linux/input.h +++ b/include/uapi/linux/input.h @@ -34,6 +34,7 @@ struct input_event { __kernel_ulong_t __sec; #if defined(__sparc__) && defined(__arch64__) unsigned int __usec; + unsigned int __pad; #else __kernel_ulong_t __usec; #endif