lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <d7dd0c6c-a840-4a90-8b80-b1cb36941bf6@web.de>
Date: Wed, 18 Sep 2024 14:00:17 +0200
From: Markus Elfring <Markus.Elfring@....de>
To: linux-input@...r.kernel.org, Benjamin Tissoires <bentiss@...nel.org>,
 David Rheinsberg <david@...dahead.eu>, Jiri Kosina <jikos@...nel.org>
Cc: LKML <linux-kernel@...r.kernel.org>
Subject: [PATCH] HID: wiimote: Improve error handling in two functions

From: Markus Elfring <elfring@...rs.sourceforge.net>
Date: Wed, 18 Sep 2024 13:51:29 +0200

Add jump targets so that a bit of exception handling can be better reused
at the end of two function implementations.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@...rs.sourceforge.net>
---
 drivers/hid/hid-wiimote-modules.c | 34 ++++++++++++++++---------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c
index dbccdfa63916..3c10b1c68984 100644
--- a/drivers/hid/hid-wiimote-modules.c
+++ b/drivers/hid/hid-wiimote-modules.c
@@ -1424,15 +1424,12 @@ static ssize_t wiimod_bboard_calib_show(struct device *dev,
 		return ret;

 	ret = wiimote_cmd_read(wdata, 0xa40024, buf, 12);
-	if (ret != 12) {
-		wiimote_cmd_release(wdata);
-		return ret < 0 ? ret : -EIO;
-	}
+	if (ret != 12)
+		goto release_wdata;
+
 	ret = wiimote_cmd_read(wdata, 0xa40024 + 12, buf + 12, 12);
-	if (ret != 12) {
-		wiimote_cmd_release(wdata);
-		return ret < 0 ? ret : -EIO;
-	}
+	if (ret != 12)
+		goto release_wdata;

 	wiimote_cmd_release(wdata);

@@ -1460,6 +1457,10 @@ static ssize_t wiimod_bboard_calib_show(struct device *dev,
 	}

 	return ret;
+
+release_wdata:
+	wiimote_cmd_release(wdata);
+	return ret < 0 ? ret : -EIO;
 }

 static DEVICE_ATTR(bboard_calib, S_IRUGO, wiimod_bboard_calib_show, NULL);
@@ -1473,15 +1474,12 @@ static int wiimod_bboard_probe(const struct wiimod_ops *ops,
 	wiimote_cmd_acquire_noint(wdata);

 	ret = wiimote_cmd_read(wdata, 0xa40024, buf, 12);
-	if (ret != 12) {
-		wiimote_cmd_release(wdata);
-		return ret < 0 ? ret : -EIO;
-	}
+	if (ret != 12)
+		goto release_wdata;
+
 	ret = wiimote_cmd_read(wdata, 0xa40024 + 12, buf + 12, 12);
-	if (ret != 12) {
-		wiimote_cmd_release(wdata);
-		return ret < 0 ? ret : -EIO;
-	}
+	if (ret != 12)
+		goto release_wdata;

 	wiimote_cmd_release(wdata);

@@ -1546,6 +1544,10 @@ static int wiimod_bboard_probe(const struct wiimod_ops *ops,
 	input_free_device(wdata->extension.input);
 	wdata->extension.input = NULL;
 	return ret;
+
+release_wdata:
+	wiimote_cmd_release(wdata);
+	return ret < 0 ? ret : -EIO;
 }

 static void wiimod_bboard_remove(const struct wiimod_ops *ops,
--
2.46.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ