diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/skbuff.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index ec00d9264e5c..a9a764a17c28 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1655,7 +1655,7 @@ static inline struct sk_buff *skb_peek_next(struct sk_buff *skb, */ static inline struct sk_buff *skb_peek_tail(const struct sk_buff_head *list_) { - struct sk_buff *skb = list_->prev; + struct sk_buff *skb = READ_ONCE(list_->prev); if (skb == (struct sk_buff *)list_) skb = NULL; @@ -1723,7 +1723,9 @@ static inline void __skb_insert(struct sk_buff *newsk, struct sk_buff *prev, struct sk_buff *next, struct sk_buff_head *list) { - /* see skb_queue_empty_lockless() for the opposite READ_ONCE() */ + /* See skb_queue_empty_lockless() and skb_peek_tail() + * for the opposite READ_ONCE() + */ WRITE_ONCE(newsk->next, next); WRITE_ONCE(newsk->prev, prev); WRITE_ONCE(next->prev, newsk); |