linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab@s-opensource.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Shuah Khan <shuah@kernel.org>,
	Jaedon Shin <jaedon.shin@gmail.com>,
	Colin Ian King <colin.king@canonical.com>,
	Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>,
	Satendra Singh Thakur <satendra.t@samsung.com>,
	linux-media@vger.kernel.org (open list:MEDIA INPUT
	INFRASTRUCTURE (V4L/DVB)),
	linux-fsdevel@vger.kernel.org (open list:FILESYSTEMS (VFS and
	infrastructure))
Subject: [PATCH stable 4.9 10/21] media: dvb_frontend: cleanup dvb_frontend_ioctl_properties()
Date: Fri,  5 Jun 2020 09:25:07 -0700	[thread overview]
Message-ID: <20200605162518.28099-11-florian.fainelli@broadcom.com> (raw)
In-Reply-To: <20200605162518.28099-1-florian.fainelli@broadcom.com>

From: Mauro Carvalho Chehab <mchehab@s-opensource.com>

commit 2b5df42b8dec69fb926a242007fd462343db4408 upstream

Use a switch() on this function, just like on other ioctl
handlers and handle parameters inside each part of the
switch.

That makes it easier to integrate with the already existing
ioctl handler function.

Reviewed-by: Shuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/media/dvb-core/dvb_frontend.c | 83 ++++++++++++++++-----------
 1 file changed, 51 insertions(+), 32 deletions(-)

diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index 2bf55a786e29..c446f51be21a 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -1956,21 +1956,25 @@ static int dvb_frontend_ioctl_properties(struct file *file,
 	struct dvb_frontend *fe = dvbdev->priv;
 	struct dvb_frontend_private *fepriv = fe->frontend_priv;
 	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
-	int err = 0;
-
-	struct dtv_properties *tvps = parg;
-	struct dtv_property *tvp = NULL;
-	int i;
+	int err, i;
 
 	dev_dbg(fe->dvb->device, "%s:\n", __func__);
 
-	if (cmd == FE_SET_PROPERTY) {
-		dev_dbg(fe->dvb->device, "%s: properties.num = %d\n", __func__, tvps->num);
-		dev_dbg(fe->dvb->device, "%s: properties.props = %p\n", __func__, tvps->props);
+	switch(cmd) {
+	case FE_SET_PROPERTY: {
+		struct dtv_properties *tvps = parg;
+		struct dtv_property *tvp = NULL;
+
+		dev_dbg(fe->dvb->device, "%s: properties.num = %d\n",
+			__func__, tvps->num);
+		dev_dbg(fe->dvb->device, "%s: properties.props = %p\n",
+			__func__, tvps->props);
 
-		/* Put an arbitrary limit on the number of messages that can
-		 * be sent at once */
-		if ((tvps->num == 0) || (tvps->num > DTV_IOCTL_MAX_MSGS))
+		/*
+		 * Put an arbitrary limit on the number of messages that can
+		 * be sent at once
+		 */
+		if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS))
 			return -EINVAL;
 
 		tvp = memdup_user(tvps->props, tvps->num * sizeof(*tvp));
@@ -1979,23 +1983,34 @@ static int dvb_frontend_ioctl_properties(struct file *file,
 
 		for (i = 0; i < tvps->num; i++) {
 			err = dtv_property_process_set(fe, tvp + i, file);
-			if (err < 0)
-				goto out;
+			if (err < 0) {
+				kfree(tvp);
+				return err;
+			}
 			(tvp + i)->result = err;
 		}
 
 		if (c->state == DTV_TUNE)
 			dev_dbg(fe->dvb->device, "%s: Property cache is full, tuning\n", __func__);
 
-	} else if (cmd == FE_GET_PROPERTY) {
+		kfree(tvp);
+		break;
+	}
+	case FE_GET_PROPERTY: {
+		struct dtv_properties *tvps = parg;
+		struct dtv_property *tvp = NULL;
 		struct dtv_frontend_properties getp = fe->dtv_property_cache;
 
-		dev_dbg(fe->dvb->device, "%s: properties.num = %d\n", __func__, tvps->num);
-		dev_dbg(fe->dvb->device, "%s: properties.props = %p\n", __func__, tvps->props);
+		dev_dbg(fe->dvb->device, "%s: properties.num = %d\n",
+			__func__, tvps->num);
+		dev_dbg(fe->dvb->device, "%s: properties.props = %p\n",
+			__func__, tvps->props);
 
-		/* Put an arbitrary limit on the number of messages that can
-		 * be sent at once */
-		if ((tvps->num == 0) || (tvps->num > DTV_IOCTL_MAX_MSGS))
+		/*
+		 * Put an arbitrary limit on the number of messages that can
+		 * be sent at once
+		 */
+		if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS))
 			return -EINVAL;
 
 		tvp = memdup_user(tvps->props, tvps->num * sizeof(*tvp));
@@ -2010,28 +2025,32 @@ static int dvb_frontend_ioctl_properties(struct file *file,
 		 */
 		if (fepriv->state != FESTATE_IDLE) {
 			err = dtv_get_frontend(fe, &getp, NULL);
-			if (err < 0)
-				goto out;
+			if (err < 0) {
+				kfree(tvp);
+				return err;
+			}
 		}
 		for (i = 0; i < tvps->num; i++) {
 			err = dtv_property_process_get(fe, &getp, tvp + i, file);
-			if (err < 0)
-				goto out;
+			if (err < 0) {
+				kfree(tvp);
+				return err;
+			}
 			(tvp + i)->result = err;
 		}
 
 		if (copy_to_user((void __user *)tvps->props, tvp,
 				 tvps->num * sizeof(struct dtv_property))) {
-			err = -EFAULT;
-			goto out;
+			kfree(tvp);
+			return -EFAULT;
 		}
-
-	} else
-		err = -EOPNOTSUPP;
-
-out:
-	kfree(tvp);
-	return err;
+		kfree(tvp);
+		break;
+	}
+	default:
+		return -ENOTSUPP;
+	} /* switch */
+	return 0;
 }
 
 static int dtv_set_frontend(struct dvb_frontend *fe)
-- 
2.17.1


  parent reply	other threads:[~2020-06-05 16:29 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-05 16:24 [PATCH stable 4.9 00/21] Unbreak 32-bit DVB applications on 64-bit kernels Florian Fainelli
2020-06-05 16:24 ` [PATCH stable 4.9 01/21] media: dvb_frontend: ensure that inital front end status initialized Florian Fainelli
2020-06-05 16:24 ` [PATCH stable 4.9 02/21] media: dvb_frontend: initialize variable s with FE_NONE instead of 0 Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 03/21] media: dvb/frontend.h: move out a private internal structure Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 04/21] media: dvb/frontend.h: document the uAPI file Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 05/21] media: dvb_frontend: get rid of get_property() callback Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 06/21] media: stv0288: get rid of set_property boilerplate Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 07/21] media: stv6110: get rid of a srate dead code Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 08/21] media: friio-fe: get rid of set_property() Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 09/21] media: dvb_frontend: get rid of set_property() callback Florian Fainelli
2020-06-05 16:25 ` Florian Fainelli [this message]
2020-06-05 16:25 ` [PATCH stable 4.9 11/21] media: dvb_frontend: cleanup ioctl handling logic Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 12/21] media: dvb_frontend: get rid of property cache's state Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 13/21] media: dvb_frontend: better document the -EPERM condition Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 14/21] media: dvb_frontend: fix return values for FE_SET_PROPERTY Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 15/21] media: dvb_frontend: dtv_property_process_set() cleanups Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 16/21] media: dvb_frontend: be sure to init dvb_frontend_handle_ioctl() return code Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 17/21] media: dvb_frontend: Add unlocked_ioctl in dvb_frontend.c Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 18/21] media: dvb_frontend: Add compat_ioctl callback Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 19/21] media: dvb_frontend: Add commands implementation for compat ioct Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 20/21] media: dvb_frontend: fix wrong cast in compat_ioctl Florian Fainelli
2020-06-05 16:25 ` [PATCH stable 4.9 21/21] media: dvb_frontend: fix return error code Florian Fainelli
2020-06-12  4:45 ` [PATCH stable 4.9 00/21] Unbreak 32-bit DVB applications on 64-bit kernels Florian Fainelli
2020-06-17  4:39   ` Florian Fainelli
2020-06-17 14:21     ` Michael Ira Krufky
2020-06-17 14:22     ` Michael Ira Krufky
2020-06-23 19:13 ` Greg KH
2020-06-24 15:41   ` Florian Fainelli
2020-06-24 16:03     ` Greg KH
2020-06-25 11:30   ` Sean Young

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200605162518.28099-11-florian.fainelli@broadcom.com \
    --to=f.fainelli@gmail.com \
    --cc=colin.king@canonical.com \
    --cc=jaedon.shin@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mchehab@s-opensource.com \
    --cc=mkrufky@linuxtv.org \
    --cc=satendra.t@samsung.com \
    --cc=shuah@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=suzuki.katsuhiro@socionext.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).