Sorry. I spotted some errors in this patch. Some drivers use "ndev" as the variable name but I mistakenly used "dev".
It was very hard for me to attempt fixing. There are too many drivers that need to be fixed. Fixing them is very time-consuming and may also be error-prone. So I think it may be better to just remove IFF_TX_SKB_SHARING from ether_setup. Drivers that support this feature should add this flag by themselves. This also makes our code cleaner.