Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: tilegx driver: avoid compiler warning

The "id" variable was being incremented in common code, but only
initialized and used in IPv4 code. We move the increment to the IPv4
code too, and then legitimately use the uninitialized_var() macro to
avoid the gcc 4.6 warning that 'id' may be used uninitialized.
Note that gcc 4.7 does not warn.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Chris Metcalf and committed by
David S. Miller
444fa88a 04f0888d

+3 -3
+3 -3
drivers/net/ethernet/tile/tilegx.c
··· 1734 1734 unsigned int data_len = skb->len - sh_len; 1735 1735 unsigned char *data = skb->data; 1736 1736 unsigned int ih_off, th_off, p_len; 1737 - unsigned int isum_seed, tsum_seed, id, seq; 1737 + unsigned int isum_seed, tsum_seed, seq; 1738 + unsigned int uninitialized_var(id); 1738 1739 int is_ipv6; 1739 1740 long f_id = -1; /* id of the current fragment */ 1740 1741 long f_size = skb_headlen(skb) - sh_len; /* current fragment size */ ··· 1782 1781 } else { 1783 1782 ih = (struct iphdr *)(buf + ih_off); 1784 1783 ih->tot_len = htons(sh_len + p_len - ih_off); 1785 - ih->id = htons(id); 1784 + ih->id = htons(id++); 1786 1785 ih->check = csum_long(isum_seed + ih->tot_len + 1787 1786 ih->id) ^ 0xffff; 1788 1787 } ··· 1819 1818 slot++; 1820 1819 } 1821 1820 1822 - id++; 1823 1821 seq += p_len; 1824 1822 1825 1823 /* The last segment may be less than gso_size. */