Red Hat Bugzilla – Bug 1430038
Add missing hunk for upstream skbufhead-raw-lock RT patches
Last modified: 2017-08-01 20:25:36 EDT
Description of problem: The broken out patch tarball //www.kernel.org/pub/linux/kernel/projects/rt/4.8/patch-4.8.15-rt10.patch.xz comes with two patches: skbufhead-raw-lock.patch and skbufhead-raw-lock-free-skbs.patch, dealing with a patch management mishap by the 4.8.15-rt10 maintainer, that we have in our rhel-7.4/rt-master branch as just one patch, the original from 2011, by tglx: 85b9e707d00ab ("skbufhead-raw-lock.patch"). The problem is that something happened, a merge probably, and a hunk, the one that coincidentally is handled (slightly differently) in skbufhead-raw-lock-free-skbs.patch, disappeared, i.e. the freeing of the skbs moved to the softnet_data->tofree_q skb_queue_head list. So, to match 4.8.15-rt10 (and the original work by tglx), we need to apply skbufhead-raw-lock-free-skbs.patch. In a diff: diff -u rhel7/net/core/dev.c v4.8.15-rt10/net/core/dev.c @@ -4971,13 +5214,21 @@ struct softnet_data *sd = this_cpu_ptr(&softnet_data); unsigned long time_limit = jiffies + 2; int budget = netdev_budget; + struct sk_buff_head tofree_q; + struct sk_buff *skb; LIST_HEAD(list); LIST_HEAD(repoll); + __skb_queue_head_init(&tofree_q); + local_irq_disable(); + skb_queue_splice_init(&sd->tofree_queue, &tofree_q); list_splice_init(&sd->poll_list, &list); local_irq_enable(); + while ((skb = __skb_dequeue(&tofree_q))) + kfree_skb(skb); + for (;;) { struct napi_struct *n; ----- So the effect is that without this hunk skbs will get leaked when network devices are unregistered and packets remained in its queued to be processed.
Patch submitted and applied by Luis Claudio.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2077