Message ID | 20240416114509.198069-1-r.smirnov@omp.ru (mailing list archive) |
---|---|
State | New |
Headers |
Received: from ny.mirrors.kernel.org ([147.75.199.223]) by linuxtv.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <linux-media+bounces-9514-patchwork=linuxtv.org@vger.kernel.org>) id 1rwhGE-0001yZ-01 for patchwork@linuxtv.org; Tue, 16 Apr 2024 11:46:03 +0000 Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id CB8771C21620 for <patchwork@linuxtv.org>; Tue, 16 Apr 2024 11:46:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 44834129A9E; Tue, 16 Apr 2024 11:45:56 +0000 (UTC) X-Original-To: linux-media@vger.kernel.org Received: from mx01.omp.ru (mx01.omp.ru [90.154.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3769E129A73; Tue, 16 Apr 2024 11:45:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.154.21.10 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713267956; cv=none; b=RY68/1bhZ4gv76DJubTP+33V/RzQPpCeAwOzRzNCMwl9OCz5bXVm5Fw4wRZaCXtghoyMSOD8991/1WxHw3fbtr4UKUcEbdclTZEoKpwzdL7ecL4JJMalTnuzcPyVHbscprJLnM6YXAHwy7hJJh183dBn76sGBJjpnQnemb/Xg+k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713267956; c=relaxed/simple; bh=2EiEuGAYLJcLczJGOTsB1MV+9H93nFB6tDeDt5gKoFc=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=lfiTO4lA+cqxKGzakB4NtpXLwU7gSPJ0UFqSRxfnf/Pfro3+e4LHiGSsfIiqcop6QV8Xh0hKcFJR9V4qH3oKnf/roF5BazgF9kIvSiAp4yJL0sDseiNfzThd1jHP4XyL+jdLNl4DyQhCQzKN85IL77wSBhZIG50/b//iXu6NS3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=omp.ru; spf=pass smtp.mailfrom=omp.ru; arc=none smtp.client-ip=90.154.21.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=omp.ru Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=omp.ru Received: from msk1wst434n.omp.ru (81.22.207.138) by msexch01.omp.ru (10.188.4.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.1258.12; Tue, 16 Apr 2024 14:45:37 +0300 From: Roman Smirnov <r.smirnov@omp.ru> To: Michael Krufky <mkrufky@linuxtv.org>, Mauro Carvalho Chehab <mchehab@kernel.org>, Jia-Ju Bai <baijiaju1990@gmail.com>, Hans Verkuil <hverkuil-cisco@xs4all.nl> CC: Roman Smirnov <r.smirnov@omp.ru>, <linux-media@vger.kernel.org>, <linux-kernel@vger.kernel.org>, Sergey Shtylyov <s.shtylyov@omp.ru>, <lvc-project@linuxtesting.org> Subject: [PATCH 1/3] media: tuners: tda18271: fix error code handling in tda18271_attach() Date: Tue, 16 Apr 2024 14:45:07 +0300 Message-ID: <20240416114509.198069-1-r.smirnov@omp.ru> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: <linux-media.vger.kernel.org> List-Subscribe: <mailto:linux-media+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-media+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: msexch01.omp.ru (10.188.4.12) To msexch01.omp.ru (10.188.4.12) X-KSE-ServerInfo: msexch01.omp.ru, 9 X-KSE-AntiSpam-Interceptor-Info: scan successful X-KSE-AntiSpam-Version: 6.1.0, Database issued on: 04/16/2024 11:28:46 X-KSE-AntiSpam-Status: KAS_STATUS_NOT_DETECTED X-KSE-AntiSpam-Method: none X-KSE-AntiSpam-Rate: 19 X-KSE-AntiSpam-Info: Lua profiles 184736 [Apr 16 2024] X-KSE-AntiSpam-Info: Version: 6.1.0.4 X-KSE-AntiSpam-Info: Envelope from: r.smirnov@omp.ru X-KSE-AntiSpam-Info: LuaCore: 17 0.3.17 f2153f38d75b12894d9cf445f96cd15c9ef63a9d X-KSE-AntiSpam-Info: {rep_avail} X-KSE-AntiSpam-Info: {Tracking_from_domain_doesnt_match_to} X-KSE-AntiSpam-Info: {SMTP from is not routable} X-KSE-AntiSpam-Info: {Found in DNSBL: 81.22.207.138 in (user) b.barracudacentral.org} X-KSE-AntiSpam-Info: msk1wst434n.omp.ru:7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2;omp.ru:7.1.1;81.22.207.138:7.1.2 X-KSE-AntiSpam-Info: ApMailHostAddress: 81.22.207.138 X-KSE-AntiSpam-Info: {DNS response errors} X-KSE-AntiSpam-Info: Rate: 19 X-KSE-AntiSpam-Info: Status: not_detected X-KSE-AntiSpam-Info: Method: none X-KSE-AntiSpam-Info: Auth:dmarc=temperror header.from=omp.ru;spf=temperror smtp.mailfrom=omp.ru;dkim=none X-KSE-Antiphishing-Info: Clean X-KSE-Antiphishing-ScanningType: Heuristic X-KSE-Antiphishing-Method: None X-KSE-Antiphishing-Bases: 04/16/2024 11:34:00 X-KSE-Antivirus-Interceptor-Info: scan successful X-KSE-Antivirus-Info: Clean, bases: 4/16/2024 8:38:00 AM X-KSE-Attachment-Filter-Triggered-Rules: Clean X-KSE-Attachment-Filter-Triggered-Filters: Clean X-KSE-BulkMessagesFiltering-Scan-Result: InTheLimit X-LSpam-Score: -2.5 (--) X-LSpam-Report: No, score=-2.5 required=5.0 tests=ARC_SIGNED=0.001,ARC_VALID=-0.1,BAYES_00=-1.9,DMARC_MISSING=0.001,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_NONE=-0.0001,SPF_HELO_NONE=0.001,SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no |
Series |
[1/3] media: tuners: tda18271: fix error code handling in tda18271_attach()
|
|
Commit Message
Roman Smirnov
April 16, 2024, 11:45 a.m. UTC
tda18271_attach() uses the hybrid_tuner_request_state() macro.
It may return the error code -ENOMEM, but the function handle
the value 0 instead.
Found by Linux Verification Center (linuxtesting.org) with Svace.
Fixes: b9302fa7ed97 ("media: tuners: fix error return code of hybrid_tuner_request_state()")
Signed-off-by: Roman Smirnov <r.smirnov@omp.ru>
---
drivers/media/tuners/tda18271-fe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 4/16/24 2:45 PM, Roman Smirnov wrote: > tda18271_attach() uses the hybrid_tuner_request_state() macro. > It may return the error code -ENOMEM, but the function handle > the value 0 instead. > > Found by Linux Verification Center (linuxtesting.org) with Svace. > > Fixes: b9302fa7ed97 ("media: tuners: fix error return code of hybrid_tuner_request_state()") > Signed-off-by: Roman Smirnov <r.smirnov@omp.ru> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> [...] MBR, Sergey
Hello Roman, On Tue, 16. Apr 14:45, Roman Smirnov wrote: > tda18271_attach() uses the hybrid_tuner_request_state() macro. > It may return the error code -ENOMEM, but the function handle > the value 0 instead. Maybe hybrid_tuner_request_state macro declaration should be fixed to generate zero in case of a memory allocation failure? At least it has a comment stating the following * 0 - no instances, indicates an error - kzalloc must have failed And supposedly a number of drivers implemented the error handling based on this assumption. The drivers mentioned in this series are not the only ones susceptible to the problem. Grepping through "hybrid_tuner_request_state" calls also gives out tda9887, xc2028, r820t and others. > > Found by Linux Verification Center (linuxtesting.org) with Svace. > > Fixes: b9302fa7ed97 ("media: tuners: fix error return code of hybrid_tuner_request_state()") > Signed-off-by: Roman Smirnov <r.smirnov@omp.ru> > --- > drivers/media/tuners/tda18271-fe.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/media/tuners/tda18271-fe.c b/drivers/media/tuners/tda18271-fe.c > index a7e721baaa99..23432210f06a 100644 > --- a/drivers/media/tuners/tda18271-fe.c > +++ b/drivers/media/tuners/tda18271-fe.c > @@ -1255,7 +1255,7 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr, > hybrid_tuner_instance_list, > i2c, addr, "tda18271"); > switch (instance) { > - case 0: > + case -ENOMEM: > goto fail; > case 1: > /* new tuner instance */ > -- > 2.34.1 >
On Wed, 24. Apr 21:06, Fedor Pchelkin wrote: > Hello Roman, > > On Tue, 16. Apr 14:45, Roman Smirnov wrote: > > tda18271_attach() uses the hybrid_tuner_request_state() macro. > > It may return the error code -ENOMEM, but the function handle > > the value 0 instead. > > Maybe hybrid_tuner_request_state macro declaration should be fixed to > generate zero in case of a memory allocation failure? > > At least it has a comment stating the following > * 0 - no instances, indicates an error - kzalloc must have failed > > And supposedly a number of drivers implemented the error handling based on > this assumption. > > The drivers mentioned in this series are not the only ones susceptible to > the problem. Grepping through "hybrid_tuner_request_state" calls also gives > out tda9887, xc2028, r820t and others. > > > > > Found by Linux Verification Center (linuxtesting.org) with Svace. > > > > Fixes: b9302fa7ed97 ("media: tuners: fix error return code of hybrid_tuner_request_state()") Looking more thoroughly, I think commit b9302fa7ed97 ("media: tuners: fix error return code of hybrid_tuner_request_state()") should be reverted because it just contradicts with the return values contract which is stated in the comment for the macro and which is followed by all the existing drivers. __ret should be assigned 0 in error case as was before the commit. > > Signed-off-by: Roman Smirnov <r.smirnov@omp.ru> > > --- > > drivers/media/tuners/tda18271-fe.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/media/tuners/tda18271-fe.c b/drivers/media/tuners/tda18271-fe.c > > index a7e721baaa99..23432210f06a 100644 > > --- a/drivers/media/tuners/tda18271-fe.c > > +++ b/drivers/media/tuners/tda18271-fe.c > > @@ -1255,7 +1255,7 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr, > > hybrid_tuner_instance_list, > > i2c, addr, "tda18271"); > > switch (instance) { > > - case 0: > > + case -ENOMEM: > > goto fail; > > case 1: > > /* new tuner instance */ > > -- > > 2.34.1 > >
diff --git a/drivers/media/tuners/tda18271-fe.c b/drivers/media/tuners/tda18271-fe.c index a7e721baaa99..23432210f06a 100644 --- a/drivers/media/tuners/tda18271-fe.c +++ b/drivers/media/tuners/tda18271-fe.c @@ -1255,7 +1255,7 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr, hybrid_tuner_instance_list, i2c, addr, "tda18271"); switch (instance) { - case 0: + case -ENOMEM: goto fail; case 1: /* new tuner instance */