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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 30 Apr 2019 11:25:14 -0400
From:   Sven Van Asbroeck <thesven73@...il.com>
To:     gregkh@...uxfoundation.org
Cc:     linux-kernel@...r.kernel.org, Al Viro <viro@...iv.linux.org.uk>,
        Nicholas Mc Guire <hofrat@...dl.org>
Subject: [PATCH 1/2] staging: fieldbus: anybus-s: keep device bus id in bus endianness

"Normal" bus structures such as USB or PCI keep device bus ids
in bus endinanness, and driver bus ids in host endianness.
Endianness conversion happens each time bus_match() is called.

Modify anybus-s to conform to this pattern. As a pleasant side-
effect, sparse warnings will now disappear.

This was suggested by Al Viro.

Link: https://lkml.org/lkml/2019/4/30/834
Signed-off-by: Sven Van Asbroeck <TheSven73@...il.com>
---
 drivers/staging/fieldbus/anybuss/anybuss-client.h | 2 +-
 drivers/staging/fieldbus/anybuss/host.c           | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/fieldbus/anybuss/anybuss-client.h b/drivers/staging/fieldbus/anybuss/anybuss-client.h
index 2e48fb8f0209..dce60f86c16f 100644
--- a/drivers/staging/fieldbus/anybuss/anybuss-client.h
+++ b/drivers/staging/fieldbus/anybuss/anybuss-client.h
@@ -17,7 +17,7 @@ struct anybuss_host;
 struct anybuss_client {
 	struct device dev;
 	struct anybuss_host *host;
-	u16 fieldbus_type;
+	__be16 fieldbus_type;
 	/*
 	 * these can be optionally set by the client to receive event
 	 * notifications from the host.
diff --git a/drivers/staging/fieldbus/anybuss/host.c b/drivers/staging/fieldbus/anybuss/host.c
index a64fe03b61fa..33a241dbec52 100644
--- a/drivers/staging/fieldbus/anybuss/host.c
+++ b/drivers/staging/fieldbus/anybuss/host.c
@@ -1173,7 +1173,7 @@ static int anybus_bus_match(struct device *dev,
 	struct anybuss_client *adev =
 		to_anybuss_client(dev);
 
-	return adrv->fieldbus_type == adev->fieldbus_type;
+	return adrv->fieldbus_type == be16_to_cpu(adev->fieldbus_type);
 }
 
 static int anybus_bus_probe(struct device *dev)
@@ -1264,7 +1264,7 @@ anybuss_host_common_probe(struct device *dev,
 {
 	int ret, i;
 	u8 val[4];
-	u16 fieldbus_type;
+	__be16 fieldbus_type;
 	struct anybuss_host *cd;
 
 	cd = devm_kzalloc(dev, sizeof(*cd), GFP_KERNEL);
@@ -1347,8 +1347,7 @@ anybuss_host_common_probe(struct device *dev,
 	add_device_randomness(&val, 4);
 	regmap_bulk_read(cd->regmap, REG_FIELDBUS_TYPE, &fieldbus_type,
 			 sizeof(fieldbus_type));
-	fieldbus_type = be16_to_cpu(fieldbus_type);
-	dev_info(dev, "Fieldbus type: %04X", fieldbus_type);
+	dev_info(dev, "Fieldbus type: %04X", be16_to_cpu(fieldbus_type));
 	regmap_bulk_read(cd->regmap, REG_MODULE_SW_V, val, 2);
 	dev_info(dev, "Module SW version: %02X%02X",
 		 val[0], val[1]);
-- 
2.17.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ