From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 D48913F8ED2 for ; Fri, 15 May 2026 17:50:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778867425; cv=none; b=ZRwmtA/eHVeJHqIeElu31l5vwxcwxtr9GZN8wSxdFKyikScS94r0K579/F0Gt4OhaUEYHcvnHdm9BJ9f/JTEnXxlPnGrCjHVGP5AKiferZVvbm3hx/gVa5Y0qvFatfhgXmXtwZzyYpJXPlgAt5OoI985QcGHae7HDQEc/KyFDyY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778867425; c=relaxed/simple; bh=cqhfhRNm8fIbvRAhW2EZ01B9hd88gAhg5UM+n3jAEPM=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=uS+BDjsuJsbhHVQAv1xsAZfP60aGvZvPEnXOEDJoG+eF61ZgH38c6VzdJFixBVXvEqZf4M87J0KGPwe+gdACV/nyyxzxBCCHHOyDHL+bXwxrwuII1H2UenvN9bwm0bb2Fi7pzwRfBUk/4FnAkmyUCOU1Ya4iOWZuGzNfgaMn/vk= 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=ObsJPMfl; arc=none smtp.client-ip=209.85.128.42 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="ObsJPMfl" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4891f6b6388so68065e9.0 for ; Fri, 15 May 2026 10:50:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778867422; x=1779472222; 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=aGYyBWo+9+yOvNuFGsYyiFsCMkaC4YR5bjaqf1qoRjE=; b=ObsJPMflTqvd0mzR54g0Vx6CG5lP7MtCiP9Ll/vSEo7J0vhoZyfHrGZ84xWHQ+aOUI Qx9fAoMbCU4M5p+A4EieJ1qhy/XX7VcmK8er1puhsfms/j3UBlrdaDIxetB5S3bhmnhM CSpZOCKpXNWs8ZbAMBG3oyoQNYwk1ZcSa1bTMRB0hrAkoaUqjcLgip/Ys61YrvDV2NXX 7sCGawTB49Dm6D2SCbHNl8049IDjVCSiqS4ol72HIJ3U4sk9js2VCxYBXUMIm9jKH1w9 8/OXdahF0YGnyhfgeKhnZqyz+lsQqcgjqXm8susjwqFsNjL/u/zoQmOccWyZY/E4WxUH mvdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778867422; x=1779472222; 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=aGYyBWo+9+yOvNuFGsYyiFsCMkaC4YR5bjaqf1qoRjE=; b=TXDhuZinXwbjws0LY/EfKzG+ouu64JAWBNgUc4dO+y/4ZvyEljyfZlyI6ECqGLhwFZ 5Qihtnfm5XqLxnjn2RExV5VG2VrhemGgdlAtPC2k/o7GppwMvHUeEmrzssDzhypMc5Bk V2TYdb81fZJguvGs7FT5ElmQFRwqlkhsm5/FjlLkgU1yQ0REBRy/VpCOIweMGTdgTmiH BYUUSMnekjb+PUxxQalgn/LvO4tDL0O8u8IKqLJ341K6xiqvZKC6OIvZe6DNqt9reRUu tJlogASTO1WyC4swMVlpB+wWU55WXJVYUg6EhTlwYNm7pUVoKtM7bfb0uzInXGinAumL idFQ== X-Forwarded-Encrypted: i=1; AFNElJ94zFYr5gEp+bVfGJc7jXWB8j+NrAjC+9jhXGNIerq6L47wyExKTqHnPEz9Sx+FN3lgPjfIbOvRIr7Re8g=@vger.kernel.org X-Gm-Message-State: AOJu0Ywxvth4WT1sqodzhq2qMCM6YbPj5jxFfGAeTdEzxcpboVVs4NNq o99C81ERXA3+LW7BDEn3tfHz6I96NnnXbZl3vpkdLLpqQQo5mdQSbZnI X-Gm-Gg: Acq92OF7Tvf+nJNR5s4jWgqZfTIstgMweoLq6zUir9u7kEUgy29wB5b1eJhwE5P62vY rmKehZkcMYzmLYstAVNXUZSc7zKNILNwyg6QYp5hRiq6EXPbI22GG/3pNpUBAYmJNe8TnT604Do GWR9kzPmO2kh4ko/YIjSlx2pJQymKDMHw9OeJzUIqndSALhcUliLvz7pkk0I0zAQMcO+cMzWzq+ yvNUFkT+Blu99REInYPsERSjcNWIVK9EaCwdjIWPHmlKFTexfei17FY35xsHg3cgrJfwvUnTfaT WSvxm4ONrE7g9+Uu7HjeGVV/qjjfkflbmrSO6SlrRZrEPkNZSc9Sez2Zp3BVPrZIvOMIn9NRRdW /ujbLKW8qQDVQN/tWTLxFNJJr7Q8JJfjxkaY/Ob4WVJjZeFd+oVg5EUUeFov67vFNT0b+U9uyYB dwX9h91Ns8xLwkNFXxK9gk0w1ev6+/+1jBmUln1XDTQv6v X-Received: by 2002:a05:600c:45d0:b0:488:a797:f099 with SMTP id 5b1f17b1804b1-48fe61f0787mr36281325e9.3.1778867422082; Fri, 15 May 2026 10:50:22 -0700 (PDT) Received: from localhost.localdomain ([82.215.118.79]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fe5694fcasm66713435e9.5.2026.05.15.10.50.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 May 2026 10:50:21 -0700 (PDT) From: Stepan Ionichev To: Frank.Li@nxp.com Cc: s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, shawnguo@kernel.org, gregkh@linuxfoundation.org, hcazarim@yahoo.com, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, sozdayvek@gmail.com Subject: [PATCH] firmware: imx: scu-irq: accumulate wakeup sources via sysfs_emit_at() Date: Fri, 15 May 2026 22:50:01 +0500 Message-Id: <20260515175002.34853-1-sozdayvek@gmail.com> X-Mailer: git-send-email 2.33.0.windows.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit wakeup_source_show() walks all IMX_SC_IRQ_NUM_GROUP groups and, for every group with a wakeup_src set, writes a line into the sysfs output buffer: for (i = 0; i < IMX_SC_IRQ_NUM_GROUP; i++) { if (!scu_irq_wakeup[i].wakeup_src) continue; if (scu_irq_wakeup[i].valid) sprintf(buf, "Wakeup source group = %d, ...", ...); else sprintf(buf, "Spurious SCU wakeup, group = %d, ...", ...); } return strlen(buf); Each iteration calls sprintf(buf, ...) starting at buf[0], so the previous group's line is overwritten. When several groups have wakeup_src set simultaneously, userspace reading /sys/.../wakeup_src sees only the last group reported, not the full set. The trailing return strlen(buf) reports only that last line's length for the same reason. sprintf() also has no buffer length argument; sysfs callbacks must not write past PAGE_SIZE. Convert to sysfs_emit_at() with a running offset so each group's line is appended after the previous one, and bound the writes to the PAGE_SIZE sysfs limit. Return the accumulated length directly instead of strlen(buf). Fixes: c081197a33a2 ("firmware: imx: scu-irq: support identifying SCU wakeup source from sysfs") Signed-off-by: Stepan Ionichev --- drivers/firmware/imx/imx-scu-irq.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c index a68d38f89..d1fb20d95 100644 --- a/drivers/firmware/imx/imx-scu-irq.c +++ b/drivers/firmware/imx/imx-scu-irq.c @@ -179,6 +179,7 @@ static void imx_scu_irq_callback(struct mbox_client *c, void *msg) static ssize_t wakeup_source_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { + ssize_t len = 0; int i; for (i = 0; i < IMX_SC_IRQ_NUM_GROUP; i++) { @@ -186,14 +187,16 @@ static ssize_t wakeup_source_show(struct kobject *kobj, struct kobj_attribute *a continue; if (scu_irq_wakeup[i].valid) - sprintf(buf, "Wakeup source group = %d, irq = 0x%x\n", + len += sysfs_emit_at(buf, len, + "Wakeup source group = %d, irq = 0x%x\n", i, scu_irq_wakeup[i].wakeup_src); else - sprintf(buf, "Spurious SCU wakeup, group = %d, irq = 0x%x\n", + len += sysfs_emit_at(buf, len, + "Spurious SCU wakeup, group = %d, irq = 0x%x\n", i, scu_irq_wakeup[i].wakeup_src); } - return strlen(buf); + return len; } int imx_scu_enable_general_irq_channel(struct device *dev) -- 2.43.0