Moon Yeounsu <yyyyn...@gmail.com> wrote: > There's no reason to use bit shift to find the UDP header. > It's not intuitive and it reinvents well-defined functions. > > Signed-off-by: Moon Yeounsu <yyyyn...@gmail.com> > --- > drivers/net/ethernet/intel/e1000e/netdev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c > b/drivers/net/ethernet/intel/e1000e/netdev.c > index 360ee26557f7..07c4cf84bdf3 100644 > --- a/drivers/net/ethernet/intel/e1000e/netdev.c > +++ b/drivers/net/ethernet/intel/e1000e/netdev.c > @@ -5731,7 +5731,7 @@ static int e1000_transfer_dhcp_info(struct > e1000_adapter *adapter, > if (ip->protocol != IPPROTO_UDP) > return 0; > > - udp = (struct udphdr *)((u8 *)ip + (ip->ihl << 2)); > + udp = (struct udphdr *)((u8 *)ip + ip_hdrlen(skb));
This helper needs skb_network_header being set up correctly, are you sure thats the case here? ip pointer is fetched via data + 14 right above, so it doesn't look like this would work.