diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 4a3f54e358e52f7505a8d13aa2a9938941233746..c4de536cefa36e02b5fae073dcb3074e0682c92f 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -834,7 +834,7 @@ static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
 				  const void *daddr, const void *saddr,
 				  unsigned len)
 {
-	if (!dev->header_ops)
+	if (!dev->header_ops || !dev->header_ops->create)
 		return 0;
 
 	return dev->header_ops->create(skb, dev, type, daddr, saddr, len);