commit d16e1662d50bddd9ea545c25b4266fd916a96ec0
Author: Anand H. Krishnan <email address hidden>
Date: Fri May 5 15:00:18 2017 +0530
A cloned skbuff should not be sent to napi_gro_receive
When skb_gro_receive merges skbs/fragments, it does not take
a reference to the underlying page, thus transferring the
original reference it had to the first packet of the packet
bundle. This will work fine for non-cloned packets.
However, for cloned packets, when the gro-ed packet is
eventually freed (because the original skb was not cloned and
hence reference was 1), the merged skb's frags also get freed
(put_page-ed) without taking into account the other references
that were held for the fragments (dataref). This will result in
bad page problems.
Reviewed: https:/ /review. opencontrail. org/31156 github. com/Juniper/ contrail- vrouter/ commit/ d16e1662d50bddd 9ea545c25b4266f d916a96ec0
Committed: http://
Submitter: Zuul (<email address hidden>)
Branch: R3.2
commit d16e1662d50bddd 9ea545c25b4266f d916a96ec0
Author: Anand H. Krishnan <email address hidden>
Date: Fri May 5 15:00:18 2017 +0530
A cloned skbuff should not be sent to napi_gro_receive
When skb_gro_receive merges skbs/fragments, it does not take
a reference to the underlying page, thus transferring the
original reference it had to the first packet of the packet
bundle. This will work fine for non-cloned packets.
However, for cloned packets, when the gro-ed packet is
eventually freed (because the original skb was not cloned and
hence reference was 1), the merged skb's frags also get freed
(put_page-ed) without taking into account the other references
that were held for the fragments (dataref). This will result in
bad page problems.
Hence, avoid GRO for cloned packets.
Change-Id: Ief768873bf4ea5 7bd88e3f809392b ec92fc41932
Closes-Bug: #1683305