linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method
       [not found] ` <fa146966b0ce1e7f04d59eb27cc0e968f51b22de.1316774801.git.andriy.shevchenko@linux.intel.com>
@ 2011-09-23 10:47   ` Andy Shevchenko
  2011-09-27 11:51     ` [PATCHv2] " Andy Shevchenko
  2011-09-27 12:01     ` [PATCHv2.1] " Andy Shevchenko
  0 siblings, 2 replies; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-23 10:47 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andy Shevchenko, John W. Linville, linux-wireless, netdev

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
---
 drivers/net/wireless/at76c50x-usb.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..157507a6 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,7 +500,6 @@ exit:
 
 #define HEX2STR_BUFFERS 4
 #define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
 
 /* Convert binary data into hex string */
 static char *hex2str(void *buf, int len)
@@ -520,10 +519,8 @@ static char *hex2str(void *buf, int len)
 	}
 
 	while (len--) {
-		*obuf++ = BIN2HEX(*ibuf >> 4);
-		*obuf++ = BIN2HEX(*ibuf & 0xf);
+		obuf = hex_pack_byte(obuf, *ibuf++);
 		*obuf++ = '-';
-		ibuf++;
 	}
 	*(--obuf) = '\0';
 
-- 
1.7.6.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCHv2] wireless: at76c50x: use native hex_pack_byte() method
  2011-09-23 10:47   ` [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method Andy Shevchenko
@ 2011-09-27 11:51     ` Andy Shevchenko
  2011-09-27 12:01     ` [PATCHv2.1] " Andy Shevchenko
  1 sibling, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-27 11:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andy Shevchenko, John W. Linville, linux-wireless, netdev

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
---
 drivers/net/wireless/at76c50x-usb.c |   16 ++++++----------
 1 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..96daaad 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,7 +500,6 @@ exit:
 
 #define HEX2STR_BUFFERS 4
 #define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
 
 /* Convert binary data into hex string */
 static char *hex2str(void *buf, int len)
@@ -514,18 +513,15 @@ static char *hex2str(void *buf, int len)
 	if (len > HEX2STR_MAX_LEN)
 		len = HEX2STR_MAX_LEN;
 
-	if (len <= 0) {
-		ret[0] = '\0';
-		return ret;
-	}
-
 	while (len--) {
-		*obuf++ = BIN2HEX(*ibuf >> 4);
-		*obuf++ = BIN2HEX(*ibuf & 0xf);
+		obuf = pack_hex_byte(obuf, *ibuf++);
 		*obuf++ = '-';
-		ibuf++;
 	}
-	*(--obuf) = '\0';
+
+	if (*obuf == '-')
+		obuf--;
+
+	*obuf = '\0';
 
 	return ret;
 }
-- 
1.7.6.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCHv2.1] wireless: at76c50x: use native hex_pack_byte() method
  2011-09-23 10:47   ` [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method Andy Shevchenko
  2011-09-27 11:51     ` [PATCHv2] " Andy Shevchenko
@ 2011-09-27 12:01     ` Andy Shevchenko
  2011-09-27 19:47       ` Pavel Roskin
  1 sibling, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-27 12:01 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andy Shevchenko, John W. Linville, linux-wireless, netdev

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
---
 drivers/net/wireless/at76c50x-usb.c |   18 +++++++-----------
 1 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..2dde5f6 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,10 +500,9 @@ exit:
 
 #define HEX2STR_BUFFERS 4
 #define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
 
 /* Convert binary data into hex string */
-static char *hex2str(void *buf, int len)
+static char *hex2str(void *buf, size_t len)
 {
 	static atomic_t a = ATOMIC_INIT(0);
 	static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
@@ -514,18 +513,15 @@ static char *hex2str(void *buf, int len)
 	if (len > HEX2STR_MAX_LEN)
 		len = HEX2STR_MAX_LEN;
 
-	if (len <= 0) {
-		ret[0] = '\0';
-		return ret;
-	}
-
 	while (len--) {
-		*obuf++ = BIN2HEX(*ibuf >> 4);
-		*obuf++ = BIN2HEX(*ibuf & 0xf);
+		obuf = pack_hex_byte(obuf, *ibuf++);
 		*obuf++ = '-';
-		ibuf++;
 	}
-	*(--obuf) = '\0';
+
+	if (*obuf == '-')
+		obuf--;
+
+	*obuf = '\0';
 
 	return ret;
 }
-- 
1.7.6.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCHv2.1] wireless: at76c50x: use native hex_pack_byte() method
  2011-09-27 12:01     ` [PATCHv2.1] " Andy Shevchenko
@ 2011-09-27 19:47       ` Pavel Roskin
  2011-09-28  8:11         ` Andy Shevchenko
  2011-09-28  9:30         ` [PATCHv3] " Andy Shevchenko
  0 siblings, 2 replies; 7+ messages in thread
From: Pavel Roskin @ 2011-09-27 19:47 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: John W. Linville, linux-wireless

On Tue, 27 Sep 2011 15:01:49 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: "John W. Linville" <linville@tuxdriver.com>
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> ---
>  drivers/net/wireless/at76c50x-usb.c |   18 +++++++-----------
>  1 files changed, 7 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/net/wireless/at76c50x-usb.c

...

> b/drivers/net/wireless/at76c50x-usb.c index 2986014..2dde5f6 100644
> -		*obuf++ = BIN2HEX(*ibuf >> 4);
> -		*obuf++ = BIN2HEX(*ibuf & 0xf);
> +		obuf = pack_hex_byte(obuf, *ibuf++);
>  		*obuf++ = '-';
> -		ibuf++;
>  	}
> -	*(--obuf) = '\0';
> +
> +	if (*obuf == '-')
> +		obuf--;

This will access uninitialized data and fail to strip the final "-" in
most cases.  The check for len being 0 was there for a reason.  Please
actually test your code.

NACK

By the way, I don't think it's necessary to copy linux-kernel and
netdev about a change affecting just a wireless driver.

-- 
Regards,
Pavel Roskin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2.1] wireless: at76c50x: use native hex_pack_byte() method
  2011-09-27 19:47       ` Pavel Roskin
@ 2011-09-28  8:11         ` Andy Shevchenko
  2011-09-28  9:30         ` [PATCHv3] " Andy Shevchenko
  1 sibling, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-28  8:11 UTC (permalink / raw)
  To: Pavel Roskin; +Cc: John W. Linville, linux-wireless

On Tue, 2011-09-27 at 15:47 -0400, Pavel Roskin wrote: 
> On Tue, 27 Sep 2011 15:01:49 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > Cc: "John W. Linville" <linville@tuxdriver.com>
> > Cc: linux-wireless@vger.kernel.org
> > Cc: netdev@vger.kernel.org
> > ---
> >  drivers/net/wireless/at76c50x-usb.c |   18 +++++++-----------
> >  1 files changed, 7 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/at76c50x-usb.c
> 
> ...
> 
> > b/drivers/net/wireless/at76c50x-usb.c index 2986014..2dde5f6 100644
> > -		*obuf++ = BIN2HEX(*ibuf >> 4);
> > -		*obuf++ = BIN2HEX(*ibuf & 0xf);
> > +		obuf = pack_hex_byte(obuf, *ibuf++);
> >  		*obuf++ = '-';
> > -		ibuf++;
> >  	}
> > -	*(--obuf) = '\0';
> > +
> > +	if (*obuf == '-')
> > +		obuf--;
> 
> This will access uninitialized data and fail to strip the final "-" in
> most cases.  The check for len being 0 was there for a reason.  Please
> actually test your code.
In case of len == 0 we have either '\0' or hex digit in the first byte
of the array. Otherwise it's a mess in the memory which should not be
happened.

> 
> NACK

> 
> By the way, I don't think it's necessary to copy linux-kernel and
> netdev about a change affecting just a wireless driver.
> 

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCHv3] wireless: at76c50x: use native hex_pack_byte() method
  2011-09-27 19:47       ` Pavel Roskin
  2011-09-28  8:11         ` Andy Shevchenko
@ 2011-09-28  9:30         ` Andy Shevchenko
  2011-09-28 20:40           ` Pavel Roskin
  1 sibling, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-28  9:30 UTC (permalink / raw)
  To: linux-wireless, Pavel Roskin; +Cc: Andy Shevchenko, John W. Linville

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
---
 drivers/net/wireless/at76c50x-usb.c |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..39322d4 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,10 +500,9 @@ exit:
 
 #define HEX2STR_BUFFERS 4
 #define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
 
 /* Convert binary data into hex string */
-static char *hex2str(void *buf, int len)
+static char *hex2str(void *buf, size_t len)
 {
 	static atomic_t a = ATOMIC_INIT(0);
 	static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
@@ -514,18 +513,17 @@ static char *hex2str(void *buf, int len)
 	if (len > HEX2STR_MAX_LEN)
 		len = HEX2STR_MAX_LEN;
 
-	if (len <= 0) {
-		ret[0] = '\0';
-		return ret;
-	}
+	if (len == 0)
+		goto exit;
 
 	while (len--) {
-		*obuf++ = BIN2HEX(*ibuf >> 4);
-		*obuf++ = BIN2HEX(*ibuf & 0xf);
+		obuf = pack_hex_byte(obuf, *ibuf++);
 		*obuf++ = '-';
-		ibuf++;
 	}
-	*(--obuf) = '\0';
+	obuf--;
+
+exit:
+	*obuf = '\0';
 
 	return ret;
 }
-- 
1.7.6.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCHv3] wireless: at76c50x: use native hex_pack_byte() method
  2011-09-28  9:30         ` [PATCHv3] " Andy Shevchenko
@ 2011-09-28 20:40           ` Pavel Roskin
  0 siblings, 0 replies; 7+ messages in thread
From: Pavel Roskin @ 2011-09-28 20:40 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: linux-wireless, John W. Linville

On Wed, 28 Sep 2011 12:30:59 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: "John W. Linville" <linville@tuxdriver.com>

Tested-by: Pavel Roskin <proski@gnu.org>

> ---
>  drivers/net/wireless/at76c50x-usb.c |   18 ++++++++----------
>  1 files changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/net/wireless/at76c50x-usb.c
> b/drivers/net/wireless/at76c50x-usb.c index 2986014..39322d4 100644
> --- a/drivers/net/wireless/at76c50x-usb.c
> +++ b/drivers/net/wireless/at76c50x-usb.c
> @@ -500,10 +500,9 @@ exit:
>  
>  #define HEX2STR_BUFFERS 4
>  #define HEX2STR_MAX_LEN 64
> -#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
>  
>  /* Convert binary data into hex string */
> -static char *hex2str(void *buf, int len)
> +static char *hex2str(void *buf, size_t len)
>  {
>  	static atomic_t a = ATOMIC_INIT(0);
>  	static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
> @@ -514,18 +513,17 @@ static char *hex2str(void *buf, int len)
>  	if (len > HEX2STR_MAX_LEN)
>  		len = HEX2STR_MAX_LEN;
>  
> -	if (len <= 0) {
> -		ret[0] = '\0';
> -		return ret;
> -	}
> +	if (len == 0)
> +		goto exit;
>  
>  	while (len--) {
> -		*obuf++ = BIN2HEX(*ibuf >> 4);
> -		*obuf++ = BIN2HEX(*ibuf & 0xf);
> +		obuf = pack_hex_byte(obuf, *ibuf++);
>  		*obuf++ = '-';
> -		ibuf++;
>  	}
> -	*(--obuf) = '\0';
> +	obuf--;
> +
> +exit:
> +	*obuf = '\0';
>  
>  	return ret;
>  }



-- 
Regards,
Pavel Roskin

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-09-28 20:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20110919232602.ac450450.akpm00@gmail.com>
     [not found] ` <fa146966b0ce1e7f04d59eb27cc0e968f51b22de.1316774801.git.andriy.shevchenko@linux.intel.com>
2011-09-23 10:47   ` [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method Andy Shevchenko
2011-09-27 11:51     ` [PATCHv2] " Andy Shevchenko
2011-09-27 12:01     ` [PATCHv2.1] " Andy Shevchenko
2011-09-27 19:47       ` Pavel Roskin
2011-09-28  8:11         ` Andy Shevchenko
2011-09-28  9:30         ` [PATCHv3] " Andy Shevchenko
2011-09-28 20:40           ` Pavel Roskin

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).