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