iscsi: bugfix for displaying IPv6 address
RFC PATCH 2/5 iscsi: bugfix for displaying IPv6 address
Notice that ip is a u8 *, so currently every other byte is being truncated here.
--- drivers/firmware/iscsi_ibft.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
drivers/firmware/iscsi_ibft.c +1 -3
@@ -290,9 +290,7 @@ static ssize_t sprintf_ipaddr(char *buf, u8 *ip)/* * IPv6 */ - str +=sprintf (str,NIP6_FMT ,ntohs (ip[0 ]),ntohs (ip[1 ]), -ntohs (ip[2 ]),ntohs (ip[3 ]),ntohs (ip[4 ]), -ntohs (ip[5 ]),ntohs (ip[6 ]),ntohs (ip[7 ])); + str +=sprintf (str,"%p6" , ip); } str +=sprintf (str,"\n" );return str - buf;
Signature · 1 line
1.6.0.3.729.g6ea410
Quoted 3 lines · On Mon, 27 Oct 2008 21:05:17 -0700 Harvey Harrison <[email protected]>…
Notice that ip is a u8 *, so currently every other byte is being truncated here.
I don't understand that bug description. The code looks OK to me?
Quoted 9 lines
--- drivers/firmware/iscsi_ibft.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)drivers/firmware/iscsi_ibft.c +0
-0
drivers/firmware/iscsi_ibft.c static ssize_t sprintf_ipaddr(char *buf, u8 *ip) · line 296
Quoted 10 lines
drivers/firmware/iscsi_ibft.c +1
-3@@ -290,9 +290,7 @@ static ssize_t sprintf_ipaddr(char *buf, u8 *ip)/* * IPv6 */ - str +=sprintf (str,NIP6_FMT ,ntohs (ip[0 ]),ntohs (ip[1 ]), -ntohs (ip[2 ]),ntohs (ip[3 ]),ntohs (ip[4 ]), -ntohs (ip[5 ]),ntohs (ip[6 ]),ntohs (ip[7 ])); + str +=sprintf (str,"%p6" , ip); } str +=sprintf (str,"\n" );return str - buf;
Is the data format which sprintf_ipaddr() is parsing specific to iscsi? If not, that helper function is generic and shouldn't be buried down in drivers/firmware/iscsi_ibft.c?
Quoted 7 lines · Andrew Morton
Quoted 3 lines · On Mon, 27 Oct 2008 21:05:17 -0700 Harvey Harrison <[email protected]>…
Notice that ip is a u8 *, so currently every other byte is being truncated here.
Quoted 6 lines
I don't understand that bug description. The code looks OK to me?
drivers/firmware/iscsi_ibft.c static ssize_t sprintf_ipaddr(char *buf, u8 *ip) · line 293
Quoted 4 lines
drivers/firmware/iscsi_ibft.c +1
-3- str +=sprintf (str,NIP6_FMT ,ntohs (ip[0 ]),ntohs (ip[1 ]), -ntohs (ip[2 ]),ntohs (ip[3 ]),ntohs (ip[4 ]), -ntohs (ip[5 ]),ntohs (ip[6 ]),ntohs (ip[7 ])); + str +=sprintf (str,"%p6" , ip);
If ip is a u8 * these ntohs are operating on bytes which is bogus, and NIP6_FMT expects to get 8 u16s, not 8 u8s.
johannes