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>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 22 Feb 2008 10:51:05 -0800
From:	Harvey Harrison <harvey.harrison@...il.com>
To:	Andrew Morton <akpm@...ux-foundation.org>,
	Bernd Petrovitsch <bernd@...mix.at>
Cc:	LKML <linux-kernel@...r.kernel.org>
Subject: [PATCH 1/2] char: hide sparse expensive pointer subtraction
	warning in specialix.c

The warnings come from two static inlines so the ugliness in hiding them
is well contained.
drivers/char/specialix.c:238:19: warning: potentially expensive pointer subtraction
drivers/char/specialix.c:245:19: warning: potentially expensive pointer subtraction

Signed-off-by: Harvey Harrison <harvey.harrison@...il.com>
---
Bernd noticed that I'm an idiot.  I was only hiding them to see what else
was in the file.  This patch is at least functionally correct.

Brown-paper-bagged-by: Harvey Harrison

 drivers/char/specialix.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/char/specialix.c b/drivers/char/specialix.c
index c0e08c7..34c7de6 100644
--- a/drivers/char/specialix.c
+++ b/drivers/char/specialix.c
@@ -228,21 +228,21 @@ static inline int sx_paranoia_check(struct specialix_port const * port,
 /* Get board number from pointer */
 static inline int board_No (struct specialix_board * bp)
 {
-	return bp - sx_board;
+	return ((char *)bp - (char *)sx_board) / sizeof(*bp);
 }
 
 
 /* Get port number from pointer */
 static inline int port_No (struct specialix_port const * port)
 {
-	return SX_PORT(port - sx_port);
+	return SX_PORT(((char *)port - (char *)sx_port) / sizeof(*port));
 }
 
 
 /* Get pointer to board from pointer to port */
 static inline struct specialix_board * port_Board(struct specialix_port const * port)
 {
-	return &sx_board[SX_BOARD(port - sx_port)];
+	return &sx_board[SX_BOARD(port_No(port))];
 }
 
 
-- 
1.5.4.2.200.g99e75


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ