Skip to contentSkip to conversation

net: nhs: fix 32-bit build warning

PATCH In review Arnd Bergmann 5 participants 5 messages Oct 6, 2015 – Oct 12, 2015

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 net: nhs: fix 32-bit build warning

The recently added hns driver causes a build warning in ARM allmodconfig builds:

drivers/net/ethernet/hisilicon/hns/hnae.c: In function 'handles_show':
drivers/net/ethernet/hisilicon/hns/hnae.c:452:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

          j, (u64)h->qs[i]->io_base);
             ^

This removes the pointless cast and prints the pointer address using the "%p" format string in all three locations.

drivers/net/ethernet/hisilicon/hns/hnae.c +6 -6
index 0a0a9e80dcd7..f52e99acf463 100644
@@ -448,12 +448,12 @@ static ssize_t handles_show(struct device *dev,
 		s += sprintf(buf + s, "handle %d (eport_id=%u from %s):\n",
 			    i++, h->eport_id, h->dev->name);
 		for (j = 0; j < h->q_num; j++) {
-			s += sprintf(buf + s, "\tqueue[%d] on 0x%llx\n",
-				     j, (u64)h->qs[i]->io_base);
-#define HANDEL_TX_MSG "\t\ttx_ring on 0x%llx:%u,%u,%u,%u,%u,%llu,%llu\n"
+			s += sprintf(buf + s, "\tqueue[%d] on %p\n",
+				     j, h->qs[i]->io_base);
+#define HANDEL_TX_MSG "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n"
 			s += sprintf(buf + s,
 				     HANDEL_TX_MSG,
-				     (u64)h->qs[i]->tx_ring.io_base,
+				     h->qs[i]->tx_ring.io_base,
 				     h->qs[i]->tx_ring.buf_size,
 				     h->qs[i]->tx_ring.desc_num,
 				     h->qs[i]->tx_ring.max_desc_num_per_pkt,
@@ -462,8 +462,8 @@ static ssize_t handles_show(struct device *dev,
 				 h->qs[i]->tx_ring.stats.sw_err_cnt,
 				 h->qs[i]->tx_ring.stats.io_err_cnt);
 			s += sprintf(buf + s,
-				"\t\trx_ring on 0x%llx:%u,%u,%llu,%llu,%llu\n",
-				(u64)h->qs[i]->rx_ring.io_base,
+				"\t\trx_ring on %p:%u,%u,%llu,%llu,%llu\n",
+				h->qs[i]->rx_ring.io_base,
 				h->qs[i]->rx_ring.buf_size,
 				h->qs[i]->rx_ring.desc_num,
 				h->qs[i]->rx_ring.stats.sw_err_cnt,
maintainer
#2 lore raw
In reply to Arnd Bergmann

From: Arnd Bergmann <[email protected]>
Date: Tue, 06 Oct 2015 23:53:57 +0200

Quoted 5 lines

The recently added hns driver causes a build warning in ARM allmodconfig builds:

drivers/net/ethernet/hisilicon/hns/hnae.c: In function 'handles_show':
drivers/net/ethernet/hisilicon/hns/hnae.c:452:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

Quoted 7 lines
          j, (u64)h->qs[i]->io_base);
             ^

This removes the pointless cast and prints the pointer address using the "%p" format string in all three locations.

Applied with subject typo fixed, thanks.

#3 lore raw
In reply to Arnd Bergmann

drivers/net/ethernet/hisilicon/hns/hnae.c

Quoted 1 line · Arnd Bergmann
drivers/net/ethernet/hisilicon/hns/hnae.c +0 -0

[]

drivers/net/ethernet/hisilicon/hns/hnae.c static ssize_t handles_show(struct device *dev, · line 455

Quoted 12 lines
drivers/net/ethernet/hisilicon/hns/hnae.c +3 -3
@@ -448,12 +448,12 @@ static ssize_t handles_show(struct device *dev,
 		s += sprintf(buf + s, "handle %d (eport_id=%u from %s):\n",
 			    i++, h->eport_id, h->dev->name);
 		for (j = 0; j < h->q_num; j++) {
-			s += sprintf(buf + s, "\tqueue[%d] on 0x%llx\n",
-				     j, (u64)h->qs[i]->io_base);
-#define HANDEL_TX_MSG "\t\ttx_ring on 0x%llx:%u,%u,%u,%u,%u,%llu,%llu\n"
+			s += sprintf(buf + s, "\tqueue[%d] on %p\n",
+				     j, h->qs[i]->io_base);
+#define HANDEL_TX_MSG "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n"
 			s += sprintf(buf + s,
 				     HANDEL_TX_MSG,

Maybe one day remove the misspelled and
used once HANDEL_TX_MSG macro too.

Another possibility is to use a generally
smaller object code style like:

	char *s = buf;
	...
	s += sprintf(s, ...)
	...
	return s - buf;

instead of

	ssize_t s = 0;
	...
	s += sprintf(buf + s, ...)
	...
	return s;
---
 drivers/net/ethernet/hisilicon/hns/hnae.c | 35 +++++++++++++++----------------
 1 file changed, 17 insertions(+), 18 deletions(-)
drivers/net/ethernet/hisilicon/hns/hnae.c +17 -18
index f52e99a..d2af46f 100644
@@ -439,40 +439,39 @@ EXPORT_SYMBOL(hnae_ae_unregister);
 static ssize_t handles_show(struct device *dev,
 			    struct device_attribute *attr, char *buf)
 {
-	ssize_t s = 0;
+	char *s = buf;
 	struct hnae_ae_dev *hdev = cls_to_ae_dev(dev);
 	struct hnae_handle *h;
 	int i = 0, j;
 
 	list_for_each_entry_rcu(h, &hdev->handle_list, node) {
-		s += sprintf(buf + s, "handle %d (eport_id=%u from %s):\n",
-			    i++, h->eport_id, h->dev->name);
+		s += sprintf(s, "handle %d (eport_id=%u from %s):\n",
+			     i++, h->eport_id, h->dev->name);
 		for (j = 0; j < h->q_num; j++) {
-			s += sprintf(buf + s, "\tqueue[%d] on %p\n",
+			s += sprintf(s, "\tqueue[%d] on %p\n",
 				     j, h->qs[i]->io_base);
-#define HANDEL_TX_MSG "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n"
-			s += sprintf(buf + s,
-				     HANDEL_TX_MSG,
+			s += sprintf(s,
+				     "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n",
 				     h->qs[i]->tx_ring.io_base,
 				     h->qs[i]->tx_ring.buf_size,
 				     h->qs[i]->tx_ring.desc_num,
 				     h->qs[i]->tx_ring.max_desc_num_per_pkt,
 				     h->qs[i]->tx_ring.max_raw_data_sz_per_desc,
 				     h->qs[i]->tx_ring.max_pkt_size,
-				 h->qs[i]->tx_ring.stats.sw_err_cnt,
-				 h->qs[i]->tx_ring.stats.io_err_cnt);
-			s += sprintf(buf + s,
-				"\t\trx_ring on %p:%u,%u,%llu,%llu,%llu\n",
-				h->qs[i]->rx_ring.io_base,
-				h->qs[i]->rx_ring.buf_size,
-				h->qs[i]->rx_ring.desc_num,
-				h->qs[i]->rx_ring.stats.sw_err_cnt,
-				h->qs[i]->rx_ring.stats.io_err_cnt,
-				h->qs[i]->rx_ring.stats.seg_pkt_cnt);
+				     h->qs[i]->tx_ring.stats.sw_err_cnt,
+				     h->qs[i]->tx_ring.stats.io_err_cnt);
+			s += sprintf(s,
+				     "\t\trx_ring on %p:%u,%u,%llu,%llu,%llu\n",
+				     h->qs[i]->rx_ring.io_base,
+				     h->qs[i]->rx_ring.buf_size,
+				     h->qs[i]->rx_ring.desc_num,
+				     h->qs[i]->rx_ring.stats.sw_err_cnt,
+				     h->qs[i]->rx_ring.stats.io_err_cnt,
+				     h->qs[i]->rx_ring.stats.seg_pkt_cnt);
 		}
 	}
 
-	return s;
+	return s - buf;
 }
 
 static DEVICE_ATTR_RO(handles);
#4 lore raw
Quoted 103 lines · Joe Perches

drivers/net/ethernet/hisilicon/hns/hnae.c

Quoted 1 line · Arnd Bergmann
drivers/net/ethernet/hisilicon/hns/hnae.c +0 -0

[]

drivers/net/ethernet/hisilicon/hns/hnae.c static ssize_t handles_show(struct device *dev, · line 455

Quoted 12 lines
drivers/net/ethernet/hisilicon/hns/hnae.c +3 -3
@@ -448,12 +448,12 @@ static ssize_t handles_show(struct device *dev,
  		s += sprintf(buf + s, "handle %d (eport_id=%u from %s):\n",
  			    i++, h->eport_id, h->dev->name);
  		for (j = 0; j < h->q_num; j++) {
-			s += sprintf(buf + s, "\tqueue[%d] on 0x%llx\n",
-				     j, (u64)h->qs[i]->io_base);
-#define HANDEL_TX_MSG "\t\ttx_ring on 0x%llx:%u,%u,%u,%u,%u,%llu,%llu\n"
+			s += sprintf(buf + s, "\tqueue[%d] on %p\n",
+				     j, h->qs[i]->io_base);
+#define HANDEL_TX_MSG "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n"
  			s += sprintf(buf + s,
  				     HANDEL_TX_MSG,

Maybe one day remove the misspelled and
used once HANDEL_TX_MSG macro too.

Another possibility is to use a generally
smaller object code style like:

	char *s = buf;
	...
	s += sprintf(s, ...)
	...
	return s - buf;

instead of

	ssize_t s = 0;
	...
	s += sprintf(buf + s, ...)
	...
	return s;
---
  drivers/net/ethernet/hisilicon/hns/hnae.c | 35 +++++++++++++++----------------
  1 file changed, 17 insertions(+), 18 deletions(-)
drivers/net/ethernet/hisilicon/hns/hnae.c +17 -18
index f52e99a..d2af46f 100644
@@ -439,40 +439,39 @@ EXPORT_SYMBOL(hnae_ae_unregister);
  static ssize_t handles_show(struct device *dev,
  			    struct device_attribute *attr, char *buf)
  {
-	ssize_t s = 0;
+	char *s = buf;
  	struct hnae_ae_dev *hdev = cls_to_ae_dev(dev);
  	struct hnae_handle *h;
  	int i = 0, j;
 
  	list_for_each_entry_rcu(h, &hdev->handle_list, node) {
-		s += sprintf(buf + s, "handle %d (eport_id=%u from %s):\n",
-			    i++, h->eport_id, h->dev->name);
+		s += sprintf(s, "handle %d (eport_id=%u from %s):\n",
+			     i++, h->eport_id, h->dev->name);
  		for (j = 0; j < h->q_num; j++) {
-			s += sprintf(buf + s, "\tqueue[%d] on %p\n",
+			s += sprintf(s, "\tqueue[%d] on %p\n",
  				     j, h->qs[i]->io_base);
-#define HANDEL_TX_MSG "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n"
-			s += sprintf(buf + s,
-				     HANDEL_TX_MSG,
+			s += sprintf(s,
+				     "\t\ttx_ring on %p:%u,%u,%u,%u,%u,%llu,%llu\n",
  				     h->qs[i]->tx_ring.io_base,
  				     h->qs[i]->tx_ring.buf_size,
  				     h->qs[i]->tx_ring.desc_num,
  				     h->qs[i]->tx_ring.max_desc_num_per_pkt,
  				     h->qs[i]->tx_ring.max_raw_data_sz_per_desc,
  				     h->qs[i]->tx_ring.max_pkt_size,
-				 h->qs[i]->tx_ring.stats.sw_err_cnt,
-				 h->qs[i]->tx_ring.stats.io_err_cnt);
-			s += sprintf(buf + s,
-				"\t\trx_ring on %p:%u,%u,%llu,%llu,%llu\n",
-				h->qs[i]->rx_ring.io_base,
-				h->qs[i]->rx_ring.buf_size,
-				h->qs[i]->rx_ring.desc_num,
-				h->qs[i]->rx_ring.stats.sw_err_cnt,
-				h->qs[i]->rx_ring.stats.io_err_cnt,
-				h->qs[i]->rx_ring.stats.seg_pkt_cnt);
+				     h->qs[i]->tx_ring.stats.sw_err_cnt,
+				     h->qs[i]->tx_ring.stats.io_err_cnt);
+			s += sprintf(s,
+				     "\t\trx_ring on %p:%u,%u,%llu,%llu,%llu\n",
+				     h->qs[i]->rx_ring.io_base,
+				     h->qs[i]->rx_ring.buf_size,
+				     h->qs[i]->rx_ring.desc_num,
+				     h->qs[i]->rx_ring.stats.sw_err_cnt,
+				     h->qs[i]->rx_ring.stats.io_err_cnt,
+				     h->qs[i]->rx_ring.stats.seg_pkt_cnt);
  		}
  	}
 
-	return s;
+	return s - buf;
  }
 
  static DEVICE_ATTR_RO(handles);
Quoted 2 lines

.

thanks Joe
your suggestion is good, will send out a patch to fix it.

Signature · 2 lines
Best Regards
Daode Huang