|
@@ -1325,6 +1325,16 @@ static inline int skb_header_cloned(const struct sk_buff *skb)
|
|
|
return dataref != 1;
|
|
|
}
|
|
|
|
|
|
+static inline int skb_header_unclone(struct sk_buff *skb, gfp_t pri)
|
|
|
+{
|
|
|
+ might_sleep_if(gfpflags_allow_blocking(pri));
|
|
|
+
|
|
|
+ if (skb_header_cloned(skb))
|
|
|
+ return pskb_expand_head(skb, 0, 0, pri);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* skb_header_release - release reference to header
|
|
|
* @skb: buffer to operate on
|