From nobody Sun Dec 14 05:53:24 2025 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFD31238C2A for ; Thu, 11 Dec 2025 14:56:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765464980; cv=none; b=JVtouVXBUXcbno9ihdueo5oEXCs9C/8KWF0niERv2vGEYciKW+rShTB4hL+upEXw/6sZ8rFP1pN2ZRRTPTuS4Nxz7EES0ceHXhDsxknJVKkv0LwnrTwMQjbdNKIVch35H+6PIMCBqfMcaxYd3/SbNPZYX9xJXD0LCM/Vk/FZxtI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765464980; c=relaxed/simple; bh=yi4Zg5S5/d210XtbuJ6y8EhZCGPfkcBE01FhEQmm+0I=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=awkyxgReNVjRgmzUyuqXqY3/em5QKPSRgLuOMZUtrVIXuWx23p/fjjwL9eyxk9kA3EneecmhPiI7Hm/h9BDJ6uT1rHrPUmHTNkMyISU7zmCnxfkNtnaXkXw04b/g22M7X2ITw6kx/qkRla7JrNJJOjZLK8imvrZ7JEOa0ukKnMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=RydtYddv; arc=none smtp.client-ip=117.135.210.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="RydtYddv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=aA vaw2Nv8sUZ991jDmWlTX+5pBkVilEJYyEq/kWvf8Y=; b=RydtYddv5+veQBCDT+ Vc+suCpZ0mjQy4VCW00hzwzLKmMuYP5ojV8lONtw+IWe7SApxSkmDlCqty4nrMXr WKsBv5SeS6hg6+di6ZNUNOuNPj07YumXlFSYPqrl21ZiInQNx5cbE7JZgTe0dpDL Tn1iKW5bZ6D5wjOKN6e1B504Q= Received: from rom-ubuntu.. (unknown []) by gzga-smtp-mtada-g0-3 (Coremail) with SMTP id _____wB3EBVw2zppyoO0BA--.3266S2; Thu, 11 Dec 2025 22:55:45 +0800 (CST) From: Yufeng Wang To: Mark Gross , Arnd Bergmann , Greg Kroah-Hartman , Yudong Wang Cc: linux-kernel@vger.kernel.org Subject: [PATCH] tlclk: Add checking of return value of sscanf Date: Thu, 11 Dec 2025 22:55:42 +0800 Message-ID: <20251211145542.11633-1-r4o5m6e8o@163.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wB3EBVw2zppyoO0BA--.3266S2 X-Coremail-Antispam: 1Uf129KBjvJXoW3AF45Ar15Aw4kuw1rGr48Zwb_yoW7WrW8pF 4IqayYyFWxKFy5G343Zr15Wr13Aw1vq343J39rKas2vFyUXFWFvFy7C3W8tayfJF95ZF1S 9ay5JryUAr1UZF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jewZ7UUUUU= X-CM-SenderInfo: 3uurkzkwhy0qqrwthudrp/xtbCzhH7cWk623F8wQAA3R Content-Type: text/plain; charset="utf-8" From: Yuedong Wang Function sscanf has a missing return value check. Signed-off-by: Yuedong Wang --- drivers/char/tlclk.c | 54 +++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/drivers/char/tlclk.c b/drivers/char/tlclk.c index b381ea7e85d2..c5efe5e3c6b6 100644 --- a/drivers/char/tlclk.c +++ b/drivers/char/tlclk.c @@ -331,7 +331,8 @@ static ssize_t store_received_ref_clk3a(struct device *= d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, ": tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -353,7 +354,8 @@ static ssize_t store_received_ref_clk3b(struct device *= d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, ": tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -375,7 +377,8 @@ static ssize_t store_enable_clk3b_output(struct device = *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, ": tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -396,7 +399,8 @@ static ssize_t store_enable_clk3a_output(struct device = *d, unsigned long tmp; unsigned char val; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -417,7 +421,8 @@ static ssize_t store_enable_clkb1_output(struct device = *d, unsigned long tmp; unsigned char val; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -439,7 +444,8 @@ static ssize_t store_enable_clka1_output(struct device = *d, unsigned long tmp; unsigned char val; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -460,7 +466,8 @@ static ssize_t store_enable_clkb0_output(struct device = *d, unsigned long tmp; unsigned char val; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -481,7 +488,8 @@ static ssize_t store_enable_clka0_output(struct device = *d, unsigned long tmp; unsigned char val; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -502,7 +510,8 @@ static ssize_t store_select_amcb2_transmit_clock(struct= device *d, unsigned long tmp; unsigned char val; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -544,7 +553,8 @@ static ssize_t store_select_amcb1_transmit_clock(struct= device *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -586,7 +596,8 @@ static ssize_t store_select_redundant_clock(struct devi= ce *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -607,7 +618,8 @@ static ssize_t store_select_ref_frequency(struct device= *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -628,7 +640,8 @@ static ssize_t store_filter_select(struct device *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -648,7 +661,8 @@ static ssize_t store_hardware_switching_mode(struct dev= ice *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -669,7 +683,8 @@ static ssize_t store_hardware_switching(struct device *= d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -689,7 +704,8 @@ static ssize_t store_refalign (struct device *d, unsigned long tmp; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); spin_lock_irqsave(&event_lock, flags); SET_PORT_BITS(TLCLK_REG0, 0xf7, 0); @@ -709,7 +725,8 @@ static ssize_t store_mode_select (struct device *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; @@ -729,7 +746,8 @@ static ssize_t store_reset (struct device *d, unsigned char val; unsigned long flags; =20 - sscanf(buf, "%lX", &tmp); + if (sscanf(buf, "%lX", &tmp) !=3D 1) + return 0; dev_dbg(d, "tmp =3D 0x%lX\n", tmp); =20 val =3D (unsigned char)tmp; --=20 2.43.0