From patchwork Mon Jul 12 06:10:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 472981 Delivered-To: patch@linaro.org Received: by 2002:a02:c94a:0:0:0:0:0 with SMTP id u10csp2683915jao; Mon, 12 Jul 2021 00:24:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYFkaOJcvDDRBa5qBGJLch1hx/BW8w4+zvaCZg50YgU8hQIHQHm/Ixb+L33NmX8+XmyYR1 X-Received: by 2002:a05:6402:1488:: with SMTP id e8mr39781264edv.341.1626074605071; Mon, 12 Jul 2021 00:23:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626074605; cv=none; d=google.com; s=arc-20160816; b=yEkihncoAY70qw7uqe7xD9JRL8an2Zu3FeWrlMnLT53jmKkvF3ufkYRujPupr8i/H6 t2yXQWkBq7dNAWCwx6efYtblHHjgWR/Vzt6shdt2VhrtYrAntEuGpTTaOne58SiHp4wN w0gQNJjYKL1TrTVVsQoE9/gb5IM2Ce12bWJSpqANHgKkoLXYeDJC4Mn6ybqK+xrKjCYp PG6KqSOCca6TftJIKFeEgCndnzpipkUwJMe7yzAkMt/YmmM7qO7iWlNU3vpnw9cwlXvF lGbFSTY+wDPoNhZNA1En79TUR6Z/Y6tILhXP6AJz6bkb9whasl4IDENAG1QixTcMsgyl LKXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=4oYttCaeE6fTCvTl7n6VTf3NV6VQLoXTwqMFzBcmu9U=; b=yfnjLhsfjwwvOOODvxsW861eDxbckcwzBmOYMIdU3va/yrXn9pF9zCxSJYNo5+e2Gv RdMo6QaNWL/LFkPOcrCH9vFAQ9oqumepetk4oOk7YxIsi46xbmCF1M4d5PHseeoW87pf L0bn+mEPo7gj6M/5DTMv3JKhAjvqKdZxTtpB7AExgwaa+keshNmDlB8WbKc+eCHojaeC UZFcSmv1NVASaZeOHzhc6Y61ONlJcrdMCXTfLpUzgMylwFkEhBUeAum36/4lwTotGoYO nL6zH1WeV57uz1+3BLeyXdIDEKrW7x4MOQ3jcz+ueVftsraFcYZHeUDEm0orPTUcrKp4 9A5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=14qiWULm; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d9si16909677edq.169.2021.07.12.00.23.24; Mon, 12 Jul 2021 00:23:25 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=14qiWULm; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245443AbhGLHXs (ORCPT + 12 others); Mon, 12 Jul 2021 03:23:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:33304 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242624AbhGLHW3 (ORCPT ); Mon, 12 Jul 2021 03:22:29 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 967016112D; Mon, 12 Jul 2021 07:19:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626074381; bh=R9iY9FdZXcf8HgeaRHjXTjeDiC7Mn9XrGOaRak7QRhs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=14qiWULmUxfAJEANgl/8hcHcTrXR4VfJe6k6LcEFI+BdZ873e8H5m8Doe+dxhEAYw vlzx1wK/9Lalbq/s0NnRmRYL5+xt92vyjuqdB6UvaKONFNIgm9uAga0Jei7BFtgL2K irJ2bIvGLmMYjd3Qhi88QFcFNYVU0Qcxs0GL88yI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jonathan Cameron , Srinivas Pandruvada , Andy Shevchenko , Sasha Levin Subject: [PATCH 5.12 534/700] iio: accel: hid: Fix buffer alignment in iio_push_to_buffers_with_timestamp() Date: Mon, 12 Jul 2021 08:10:17 +0200 Message-Id: <20210712061033.264304509@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060924.797321836@linuxfoundation.org> References: <20210712060924.797321836@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Jonathan Cameron [ Upstream commit c6559bf796ccdb3a0c79db846af96c8f7046880b ] To make code more readable, use a structure to express the channel layout and ensure the timestamp is 8 byte aligned. Note this matches what was done in all the other hid sensor drivers. This one was missed previously due to an extra level of indirection. Found during an audit of all calls of this function. Fixes: a96cd0f901ee ("iio: accel: hid-sensor-accel-3d: Add timestamp") Signed-off-by: Jonathan Cameron Cc: Srinivas Pandruvada Reviewed-by: Andy Shevchenko Link: https://lore.kernel.org/r/20210501170121.512209-4-jic23@kernel.org Signed-off-by: Sasha Levin --- drivers/iio/accel/hid-sensor-accel-3d.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) -- 2.30.2 diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c index 5d63ed19e6e2..d35d039c79cb 100644 --- a/drivers/iio/accel/hid-sensor-accel-3d.c +++ b/drivers/iio/accel/hid-sensor-accel-3d.c @@ -28,8 +28,11 @@ struct accel_3d_state { struct hid_sensor_hub_callbacks callbacks; struct hid_sensor_common common_attributes; struct hid_sensor_hub_attribute_info accel[ACCEL_3D_CHANNEL_MAX]; - /* Reserve for 3 channels + padding + timestamp */ - u32 accel_val[ACCEL_3D_CHANNEL_MAX + 3]; + /* Ensure timestamp is naturally aligned */ + struct { + u32 accel_val[3]; + s64 timestamp __aligned(8); + } scan; int scale_pre_decml; int scale_post_decml; int scale_precision; @@ -241,8 +244,8 @@ static int accel_3d_proc_event(struct hid_sensor_hub_device *hsdev, accel_state->timestamp = iio_get_time_ns(indio_dev); hid_sensor_push_data(indio_dev, - accel_state->accel_val, - sizeof(accel_state->accel_val), + &accel_state->scan, + sizeof(accel_state->scan), accel_state->timestamp); accel_state->timestamp = 0; @@ -267,7 +270,7 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev, case HID_USAGE_SENSOR_ACCEL_Y_AXIS: case HID_USAGE_SENSOR_ACCEL_Z_AXIS: offset = usage_id - HID_USAGE_SENSOR_ACCEL_X_AXIS; - accel_state->accel_val[CHANNEL_SCAN_INDEX_X + offset] = + accel_state->scan.accel_val[CHANNEL_SCAN_INDEX_X + offset] = *(u32 *)raw_data; ret = 0; break;