@@ -2909,9 +2909,19 @@ static inline void skb_reset_inner_headers(struct sk_buff *skb)
29092909 skb -> inner_transport_header = skb -> transport_header ;
29102910}
29112911
2912+ static inline int skb_mac_header_was_set (const struct sk_buff * skb )
2913+ {
2914+ return skb -> mac_header != (typeof (skb -> mac_header ))~0U ;
2915+ }
2916+
29122917static inline void skb_reset_mac_len (struct sk_buff * skb )
29132918{
2914- skb -> mac_len = skb -> network_header - skb -> mac_header ;
2919+ if (!skb_mac_header_was_set (skb )) {
2920+ DEBUG_NET_WARN_ON_ONCE (1 );
2921+ skb -> mac_len = 0 ;
2922+ } else {
2923+ skb -> mac_len = skb -> network_header - skb -> mac_header ;
2924+ }
29152925}
29162926
29172927static inline unsigned char * skb_inner_transport_header (const struct sk_buff
@@ -2927,7 +2937,10 @@ static inline int skb_inner_transport_offset(const struct sk_buff *skb)
29272937
29282938static inline void skb_reset_inner_transport_header (struct sk_buff * skb )
29292939{
2930- skb -> inner_transport_header = skb -> data - skb -> head ;
2940+ long offset = skb -> data - skb -> head ;
2941+
2942+ DEBUG_NET_WARN_ON_ONCE (offset != (typeof (skb -> inner_transport_header ))offset );
2943+ skb -> inner_transport_header = offset ;
29312944}
29322945
29332946static inline void skb_set_inner_transport_header (struct sk_buff * skb ,
@@ -2944,7 +2957,10 @@ static inline unsigned char *skb_inner_network_header(const struct sk_buff *skb)
29442957
29452958static inline void skb_reset_inner_network_header (struct sk_buff * skb )
29462959{
2947- skb -> inner_network_header = skb -> data - skb -> head ;
2960+ long offset = skb -> data - skb -> head ;
2961+
2962+ DEBUG_NET_WARN_ON_ONCE (offset != (typeof (skb -> inner_network_header ))offset );
2963+ skb -> inner_network_header = offset ;
29482964}
29492965
29502966static inline void skb_set_inner_network_header (struct sk_buff * skb ,
@@ -2966,7 +2982,10 @@ static inline unsigned char *skb_inner_mac_header(const struct sk_buff *skb)
29662982
29672983static inline void skb_reset_inner_mac_header (struct sk_buff * skb )
29682984{
2969- skb -> inner_mac_header = skb -> data - skb -> head ;
2985+ long offset = skb -> data - skb -> head ;
2986+
2987+ DEBUG_NET_WARN_ON_ONCE (offset != (typeof (skb -> inner_mac_header ))offset );
2988+ skb -> inner_mac_header = offset ;
29702989}
29712990
29722991static inline void skb_set_inner_mac_header (struct sk_buff * skb ,
@@ -2988,7 +3007,10 @@ static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
29883007
29893008static inline void skb_reset_transport_header (struct sk_buff * skb )
29903009{
2991- skb -> transport_header = skb -> data - skb -> head ;
3010+ long offset = skb -> data - skb -> head ;
3011+
3012+ DEBUG_NET_WARN_ON_ONCE (offset != (typeof (skb -> transport_header ))offset );
3013+ skb -> transport_header = offset ;
29923014}
29933015
29943016static inline void skb_set_transport_header (struct sk_buff * skb ,
@@ -3005,7 +3027,10 @@ static inline unsigned char *skb_network_header(const struct sk_buff *skb)
30053027
30063028static inline void skb_reset_network_header (struct sk_buff * skb )
30073029{
3008- skb -> network_header = skb -> data - skb -> head ;
3030+ long offset = skb -> data - skb -> head ;
3031+
3032+ DEBUG_NET_WARN_ON_ONCE (offset != (typeof (skb -> network_header ))offset );
3033+ skb -> network_header = offset ;
30093034}
30103035
30113036static inline void skb_set_network_header (struct sk_buff * skb , const int offset )
@@ -3014,11 +3039,6 @@ static inline void skb_set_network_header(struct sk_buff *skb, const int offset)
30143039 skb -> network_header += offset ;
30153040}
30163041
3017- static inline int skb_mac_header_was_set (const struct sk_buff * skb )
3018- {
3019- return skb -> mac_header != (typeof (skb -> mac_header ))~0U ;
3020- }
3021-
30223042static inline unsigned char * skb_mac_header (const struct sk_buff * skb )
30233043{
30243044 DEBUG_NET_WARN_ON_ONCE (!skb_mac_header_was_set (skb ));
@@ -3043,7 +3063,10 @@ static inline void skb_unset_mac_header(struct sk_buff *skb)
30433063
30443064static inline void skb_reset_mac_header (struct sk_buff * skb )
30453065{
3046- skb -> mac_header = skb -> data - skb -> head ;
3066+ long offset = skb -> data - skb -> head ;
3067+
3068+ DEBUG_NET_WARN_ON_ONCE (offset != (typeof (skb -> mac_header ))offset );
3069+ skb -> mac_header = offset ;
30473070}
30483071
30493072static inline void skb_set_mac_header (struct sk_buff * skb , const int offset )
0 commit comments