From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 53E9B3CE09B for ; Tue, 16 Jun 2026 05:09:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781586558; cv=none; b=HEqSqk9X2uRgaJAc5H/BEIsJldetoc1WpiOP/25yIkixD2ocZE5XH6Lvs/Hk3An5LdvgfTyk9uSU9btog7qeeQgGlepxY8yKKq+ahpg4zmDWRtprN30bz8rcHWTJPWBlPGPZfAdpGEKt1/+j0FtamsxZnLRR5nszNnSmd3CdwCw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781586558; c=relaxed/simple; bh=JutLwr4+Vn98m35lljKV0Zyxcuyw1Sw6yifdGZWiIbw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=PzYBklEi74QViAc29gCU30Imjh2uA3gZYc+mrHcGlbJ+YRm7k1iXS3BkWs7FSWIBNxlF9KLDpkzm/4WBd3cJHaCQhDrO9Ej4oxYL8SFlgwuJZnToOaQqb4qJhBhDOPL6wn0LfL147He3RuHpShZTbCGO3GzaFnNiQD6tFHyMhEc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nlRq4ZgE; arc=none smtp.client-ip=74.125.82.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nlRq4ZgE" Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-30b9e755555so1916257eec.1 for ; Mon, 15 Jun 2026 22:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781586556; x=1782191356; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=zv2aUNeCgi+uVAKLbLPI5SIc49XjDk1XQz2pXnhGtpc=; b=nlRq4ZgEwDRKNvaTBsEq55NsIQ8Cx2+oOyKx6ajk6vb/8nhfoFT3dGRxrP6YHKJ+ai g0oHHrDMCCc56DB7QMd6BGs6nbfQOWdXi8ppxME5grZq598IUTT1USSwEvWRm1WtoktE kPwCM3frIJ2BWlpZDh0vTyXhSkQpOZ+ObWQCjcaKbhrozOtdYsIQ1mMH3matnQXUBuMK LCOtQ9TTnDVHPdbP5KLJIqEm0BN5ZKMnwTjZMsja+/PFlkoQcwh5oUk1EsEqbM0nDl8V LtQ9Bee1CFU7ddNRltSuhjKl/TYAZEGvkeBWOdYicwDvkVcmgWk4nq8FT9+098apQ9tb +FXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781586556; x=1782191356; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=zv2aUNeCgi+uVAKLbLPI5SIc49XjDk1XQz2pXnhGtpc=; b=OE4g2U1t9DP9sqKGewDd7EuM1j77G63mOJKsCE7qjQ5PMmFaqQCvnLSTx4e+337DwQ yf5x5k6Havc1OWYFCZNPhtzdJlt84NHBWNav++8eqVUj62gJj7nLz3TKmg6j+6KmL7An jIgkW5QynUKsFRmHsAWQUiij1QvN/LOkf2WniBwFeL5YrMOQuDWXrIV7JtWm9NQBozUf lSLftEuyaliNDhq+LeoJ04YOr+gQSuWXld9h9T6We36NYo18+kzeq9HCVfqWhB8jb19H eDmICJf1ss3EiSaxMzqx59u/WQUaS53TlweUUVwOkM708IBOFVE96NduTv/3+Z5vUKme vNtA== X-Forwarded-Encrypted: i=1; AFNElJ8PpHs1WDCmTzYZy7e3FwXEK93uimn8HsmxuS9+EStIUng08AVdvl8mJoZVo1/k/cZMNVILEdwXMPvwHKg=@vger.kernel.org X-Gm-Message-State: AOJu0YyR+zYB310aV5w+fOZPCERQoH9+CNU9rTe+46WTobtR5EtWqegh +9A/eQwHNHNtwp0+uHZ3d22fY/7hICyCej6VmUm6AFYlBhlNMsyBkW0B X-Gm-Gg: Acq92OGoHtOyNEH4XbDmkHCOWtWfuDKbuBOVf7G3gEUuW1QRsxoqRjZHADx5obZLzXl axU3cy/CC7QcntzD9IFttsrTz6aSrY7XSOaHT9gmaqwhhR9o486PQtCxV8PBO65zaogS3OgEmf3 Upp7oYS3DU4kXmULSWYscbBRZMC3k0rOMYd14Uay1gKK8qNly8kvTVHmFzMDUQo8IWoHj43p9C4 LSbaGulmN8cyD8TTG7g1WDs52ZubsrtxJuUIuCIrkt8Z1SVv0zw/pGkiHkFZkKNs+kPvnanYkag oky689cfqPEbLRL09Gi6MeuqsD0c0Au5wCqeUAleCYOqadJQsTpOLGmA5bpQH8Ku8o9GCiZgZbq fPyXzdhq//3t0aPBab3fik/dNN84rQWJoLzYY7MYSB/giRAi4WYOwY9Dy1b1hdwmFTO9CvfDV7g HH6shfsCOebRJpSwJIGQfG74dhqj3JX8TU2yGQ8fBHUpWx1gsm7fRaa6joeT4mYm9I6b6VhNbfs kF4MoqWdAoDsZw= X-Received: by 2002:a05:7300:220b:b0:304:8364:e95f with SMTP id 5a478bee46e88-309402621b9mr8390550eec.27.1781586556381; Mon, 15 Jun 2026 22:09:16 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:3714:f5c2:9b83:3df1]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3081ea4fe55sm17266615eec.25.2026.06.15.22.09.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jun 2026 22:09:15 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Linus Walleij , Bryam Vargas , linux-kernel@vger.kernel.org, sashiko-bot@kernel.org Subject: [PATCH 1/6] Input: mms114 - fix touch indexing for MMS134S and MMS136 Date: Mon, 15 Jun 2026 22:09:06 -0700 Message-ID: <20260616050912.1531241-1-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.54.0.1136.gdb2ca164c4-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The MMS134S and MMS136 touch controllers have an event size of 6 bytes rather than 8 bytes. When __mms114_read_reg() reads the touch data packet from the device into the touch buffer, the events are packed tightly at 6-byte intervals. However, the driver iterates through the events using standard C array indexing (touch[index]), where each element is sizeof(struct mms114_touch) (8 bytes) apart. As a result, any touch events beyond the first one are read from incorrect offsets and parsed improperly. Fix this by explicitly calculating the byte offset for each touch event based on the device's specific event size. Fixes: ab108678195f ("Input: mms114 - support MMS134S") Reported-by: sashiko-bot@kernel.org Assisted-by: Antigravity:gemini-3.5-flash Signed-off-by: Dmitry Torokhov --- drivers/input/touchscreen/mms114.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/input/touchscreen/mms114.c b/drivers/input/touchscreen/mms114.c index 4d748a13408d..53ad35d61d47 100644 --- a/drivers/input/touchscreen/mms114.c +++ b/drivers/input/touchscreen/mms114.c @@ -217,7 +217,9 @@ static irqreturn_t mms114_interrupt(int irq, void *dev_id) struct mms114_data *data = dev_id; struct i2c_client *client = data->client; struct mms114_touch touch[MMS114_MAX_TOUCH]; + struct mms114_touch *t; int packet_size; + int event_size; int touch_size; int index; int error; @@ -234,9 +236,11 @@ static irqreturn_t mms114_interrupt(int irq, void *dev_id) /* MMS136 has slightly different event size */ if (data->type == TYPE_MMS134S || data->type == TYPE_MMS136) - touch_size = packet_size / MMS136_EVENT_SIZE; + event_size = MMS136_EVENT_SIZE; else - touch_size = packet_size / MMS114_EVENT_SIZE; + event_size = MMS114_EVENT_SIZE; + + touch_size = packet_size / event_size; error = __mms114_read_reg(data, MMS114_INFORMATION, packet_size, (u8 *)touch); @@ -244,18 +248,20 @@ static irqreturn_t mms114_interrupt(int irq, void *dev_id) goto out; for (index = 0; index < touch_size; index++) { - switch (touch[index].type) { + t = (struct mms114_touch *)((u8 *)touch + index * event_size); + + switch (t->type) { case MMS114_TYPE_TOUCHSCREEN: - mms114_process_mt(data, touch + index); + mms114_process_mt(data, t); break; case MMS114_TYPE_TOUCHKEY: - mms114_process_touchkey(data, touch + index); + mms114_process_touchkey(data, t); break; default: dev_err(&client->dev, "Wrong touch type (%d)\n", - touch[index].type); + t->type); break; } } -- 2.54.0.1136.gdb2ca164c4-goog