On Tue, May 12, 2015 at 10:00:13PM +0200, Mateusz Kulikowski wrote: > On 11.05.2015 10:26, Dan Carpenter wrote: > (...) > >> */ > >> skb_pull(sub_skb, SNAP_SIZE); > >> - memcpy(skb_push(sub_skb, ETH_ALEN), prxb->src, ETH_ALEN); > >> - memcpy(skb_push(sub_skb, ETH_ALEN), prxb->dst, ETH_ALEN); > >> + memcpy(skb_push(sub_skb, ETH_ALEN), prxb->src, > >> + ETH_ALEN); /* Must be unaligned */ > > > > > > Which part isn't aligned? I think they both are. > > > struct rtllib_rxb *prxb = prxbIndicateArray[j]; > > struct rtllib_rxb { > u8 nr_subframes; > struct sk_buff *subframes[MAX_SUBFRAME_COUNT == 64]; > u8 dst[ETH_ALEN]; // here > u8 src[ETH_ALEN]; // here > } __packed; > > Either I forgot alignment / packing rules or this fields are never aligned "by design". You must have forgotten something... Everything after the pointer is going to be aligned sizeof(void *). regards, dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel