Gentoo Archives: gentoo-commits

From: "Mike Pagano (mpagano)" <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] linux-patches r2594 - genpatches-2.6/trunk/3.13
Date: Tue, 26 Nov 2013 00:34:40
Message-Id: 20131126003432.24B622004B@flycatcher.gentoo.org
1 Author: mpagano
2 Date: 2013-11-26 00:34:31 +0000 (Tue, 26 Nov 2013)
3 New Revision: 2594
4
5 Removed:
6 genpatches-2.6/trunk/3.13/1000_linux-3.12.1.patch
7 Modified:
8 genpatches-2.6/trunk/3.13/0000_README
9 Log:
10 Removal of 3.12.1 patch
11
12 Modified: genpatches-2.6/trunk/3.13/0000_README
13 ===================================================================
14 --- genpatches-2.6/trunk/3.13/0000_README 2013-11-26 00:33:16 UTC (rev 2593)
15 +++ genpatches-2.6/trunk/3.13/0000_README 2013-11-26 00:34:31 UTC (rev 2594)
16 @@ -42,10 +42,6 @@
17
18 Individual Patch Descriptions:
19 --------------------------------------------------------------------------
20 -Patch: 1000_linux-3.12.1.patch
21 -From: http://www.kernel.org
22 -Desc: Linux 3.12.1
23 -
24 Patch: 1500_XATTR_USER_PREFIX.patch
25 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
26 Desc: Support for namespace user.pax.* on tmpfs.
27
28 Deleted: genpatches-2.6/trunk/3.13/1000_linux-3.12.1.patch
29 ===================================================================
30 --- genpatches-2.6/trunk/3.13/1000_linux-3.12.1.patch 2013-11-26 00:33:16 UTC (rev 2593)
31 +++ genpatches-2.6/trunk/3.13/1000_linux-3.12.1.patch 2013-11-26 00:34:31 UTC (rev 2594)
32 @@ -1,583 +0,0 @@
33 -diff --git a/Makefile b/Makefile
34 -index 67077ad..eb29ec7 100644
35 ---- a/Makefile
36 -+++ b/Makefile
37 -@@ -1,6 +1,6 @@
38 - VERSION = 3
39 - PATCHLEVEL = 12
40 --SUBLEVEL = 0
41 -+SUBLEVEL = 1
42 - EXTRAVERSION =
43 - NAME = One Giant Leap for Frogkind
44 -
45 -diff --git a/drivers/misc/atmel_pwm.c b/drivers/misc/atmel_pwm.c
46 -index 494d050..a6dc56e 100644
47 ---- a/drivers/misc/atmel_pwm.c
48 -+++ b/drivers/misc/atmel_pwm.c
49 -@@ -90,8 +90,10 @@ int pwm_channel_alloc(int index, struct pwm_channel *ch)
50 - unsigned long flags;
51 - int status = 0;
52 -
53 -- /* insist on PWM init, with this signal pinned out */
54 -- if (!pwm || !(pwm->mask & 1 << index))
55 -+ if (!pwm)
56 -+ return -EPROBE_DEFER;
57 -+
58 -+ if (!(pwm->mask & 1 << index))
59 - return -ENODEV;
60 -
61 - if (index < 0 || index >= PWM_NCHAN || !ch)
62 -diff --git a/drivers/net/ethernet/chelsio/cxgb3/sge.c b/drivers/net/ethernet/chelsio/cxgb3/sge.c
63 -index 9c89dc8..632b318 100644
64 ---- a/drivers/net/ethernet/chelsio/cxgb3/sge.c
65 -+++ b/drivers/net/ethernet/chelsio/cxgb3/sge.c
66 -@@ -1599,7 +1599,8 @@ static void write_ofld_wr(struct adapter *adap, struct sk_buff *skb,
67 - flits = skb_transport_offset(skb) / 8;
68 - sgp = ndesc == 1 ? (struct sg_ent *)&d->flit[flits] : sgl;
69 - sgl_flits = make_sgl(skb, sgp, skb_transport_header(skb),
70 -- skb->tail - skb->transport_header,
71 -+ skb_tail_pointer(skb) -
72 -+ skb_transport_header(skb),
73 - adap->pdev);
74 - if (need_skb_unmap()) {
75 - setup_deferred_unmapping(skb, adap->pdev, sgp, sgl_flits);
76 -diff --git a/drivers/net/ethernet/mellanox/mlx4/cmd.c b/drivers/net/ethernet/mellanox/mlx4/cmd.c
77 -index ea20182..bb11624 100644
78 ---- a/drivers/net/ethernet/mellanox/mlx4/cmd.c
79 -+++ b/drivers/net/ethernet/mellanox/mlx4/cmd.c
80 -@@ -1691,7 +1691,7 @@ static void mlx4_master_deactivate_admin_state(struct mlx4_priv *priv, int slave
81 - vp_oper->vlan_idx = NO_INDX;
82 - }
83 - if (NO_INDX != vp_oper->mac_idx) {
84 -- __mlx4_unregister_mac(&priv->dev, port, vp_oper->mac_idx);
85 -+ __mlx4_unregister_mac(&priv->dev, port, vp_oper->state.mac);
86 - vp_oper->mac_idx = NO_INDX;
87 - }
88 - }
89 -diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
90 -index 9fbdfcd..bbc9cb8 100644
91 ---- a/drivers/net/virtio_net.c
92 -+++ b/drivers/net/virtio_net.c
93 -@@ -1118,11 +1118,6 @@ static int virtnet_cpu_callback(struct notifier_block *nfb,
94 - {
95 - struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb);
96 -
97 -- mutex_lock(&vi->config_lock);
98 --
99 -- if (!vi->config_enable)
100 -- goto done;
101 --
102 - switch(action & ~CPU_TASKS_FROZEN) {
103 - case CPU_ONLINE:
104 - case CPU_DOWN_FAILED:
105 -@@ -1136,8 +1131,6 @@ static int virtnet_cpu_callback(struct notifier_block *nfb,
106 - break;
107 - }
108 -
109 --done:
110 -- mutex_unlock(&vi->config_lock);
111 - return NOTIFY_OK;
112 - }
113 -
114 -@@ -1699,6 +1692,8 @@ static int virtnet_freeze(struct virtio_device *vdev)
115 - struct virtnet_info *vi = vdev->priv;
116 - int i;
117 -
118 -+ unregister_hotcpu_notifier(&vi->nb);
119 -+
120 - /* Prevent config work handler from accessing the device */
121 - mutex_lock(&vi->config_lock);
122 - vi->config_enable = false;
123 -@@ -1747,6 +1742,10 @@ static int virtnet_restore(struct virtio_device *vdev)
124 - virtnet_set_queues(vi, vi->curr_queue_pairs);
125 - rtnl_unlock();
126 -
127 -+ err = register_hotcpu_notifier(&vi->nb);
128 -+ if (err)
129 -+ return err;
130 -+
131 - return 0;
132 - }
133 - #endif
134 -diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h
135 -index 5715318..400fea1 100644
136 ---- a/drivers/net/xen-netback/common.h
137 -+++ b/drivers/net/xen-netback/common.h
138 -@@ -163,6 +163,7 @@ struct xenvif {
139 - unsigned long credit_usec;
140 - unsigned long remaining_credit;
141 - struct timer_list credit_timeout;
142 -+ u64 credit_window_start;
143 -
144 - /* Statistics */
145 - unsigned long rx_gso_checksum_fixup;
146 -diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
147 -index 01bb854..459935a 100644
148 ---- a/drivers/net/xen-netback/interface.c
149 -+++ b/drivers/net/xen-netback/interface.c
150 -@@ -312,8 +312,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
151 - vif->credit_bytes = vif->remaining_credit = ~0UL;
152 - vif->credit_usec = 0UL;
153 - init_timer(&vif->credit_timeout);
154 -- /* Initialize 'expires' now: it's used to track the credit window. */
155 -- vif->credit_timeout.expires = jiffies;
156 -+ vif->credit_window_start = get_jiffies_64();
157 -
158 - dev->netdev_ops = &xenvif_netdev_ops;
159 - dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO;
160 -diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
161 -index f3e591c..900da4b 100644
162 ---- a/drivers/net/xen-netback/netback.c
163 -+++ b/drivers/net/xen-netback/netback.c
164 -@@ -1185,9 +1185,8 @@ out:
165 -
166 - static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
167 - {
168 -- unsigned long now = jiffies;
169 -- unsigned long next_credit =
170 -- vif->credit_timeout.expires +
171 -+ u64 now = get_jiffies_64();
172 -+ u64 next_credit = vif->credit_window_start +
173 - msecs_to_jiffies(vif->credit_usec / 1000);
174 -
175 - /* Timer could already be pending in rare cases. */
176 -@@ -1195,8 +1194,8 @@ static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
177 - return true;
178 -
179 - /* Passed the point where we can replenish credit? */
180 -- if (time_after_eq(now, next_credit)) {
181 -- vif->credit_timeout.expires = now;
182 -+ if (time_after_eq64(now, next_credit)) {
183 -+ vif->credit_window_start = now;
184 - tx_add_credit(vif);
185 - }
186 -
187 -@@ -1208,6 +1207,7 @@ static bool tx_credit_exceeded(struct xenvif *vif, unsigned size)
188 - tx_credit_callback;
189 - mod_timer(&vif->credit_timeout,
190 - next_credit);
191 -+ vif->credit_window_start = next_credit;
192 -
193 - return true;
194 - }
195 -diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
196 -index d6a8d23..f20a044 100644
197 ---- a/drivers/usb/core/hcd.c
198 -+++ b/drivers/usb/core/hcd.c
199 -@@ -1033,6 +1033,7 @@ static int register_root_hub(struct usb_hcd *hcd)
200 - dev_name(&usb_dev->dev), retval);
201 - return retval;
202 - }
203 -+ usb_dev->lpm_capable = usb_device_supports_lpm(usb_dev);
204 - }
205 -
206 - retval = usb_new_device (usb_dev);
207 -diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
208 -index e6b682c..879651c 100644
209 ---- a/drivers/usb/core/hub.c
210 -+++ b/drivers/usb/core/hub.c
211 -@@ -135,7 +135,7 @@ struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev)
212 - return usb_get_intfdata(hdev->actconfig->interface[0]);
213 - }
214 -
215 --static int usb_device_supports_lpm(struct usb_device *udev)
216 -+int usb_device_supports_lpm(struct usb_device *udev)
217 - {
218 - /* USB 2.1 (and greater) devices indicate LPM support through
219 - * their USB 2.0 Extended Capabilities BOS descriptor.
220 -@@ -156,6 +156,11 @@ static int usb_device_supports_lpm(struct usb_device *udev)
221 - "Power management will be impacted.\n");
222 - return 0;
223 - }
224 -+
225 -+ /* udev is root hub */
226 -+ if (!udev->parent)
227 -+ return 1;
228 -+
229 - if (udev->parent->lpm_capable)
230 - return 1;
231 -
232 -diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h
233 -index 8238577..c493836 100644
234 ---- a/drivers/usb/core/usb.h
235 -+++ b/drivers/usb/core/usb.h
236 -@@ -35,6 +35,7 @@ extern int usb_get_device_descriptor(struct usb_device *dev,
237 - unsigned int size);
238 - extern int usb_get_bos_descriptor(struct usb_device *dev);
239 - extern void usb_release_bos_descriptor(struct usb_device *dev);
240 -+extern int usb_device_supports_lpm(struct usb_device *udev);
241 - extern char *usb_cache_string(struct usb_device *udev, int index);
242 - extern int usb_set_configuration(struct usb_device *dev, int configuration);
243 - extern int usb_choose_configuration(struct usb_device *udev);
244 -diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
245 -index acaee06..c3d9485 100644
246 ---- a/drivers/usb/serial/option.c
247 -+++ b/drivers/usb/serial/option.c
248 -@@ -1376,6 +1376,23 @@ static const struct usb_device_id option_ids[] = {
249 - .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
250 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff), /* ZTE MF91 */
251 - .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
252 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
253 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
254 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
255 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1545, 0xff, 0xff, 0xff) },
256 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1546, 0xff, 0xff, 0xff) },
257 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1547, 0xff, 0xff, 0xff) },
258 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1565, 0xff, 0xff, 0xff) },
259 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1566, 0xff, 0xff, 0xff) },
260 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1567, 0xff, 0xff, 0xff) },
261 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1589, 0xff, 0xff, 0xff) },
262 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1590, 0xff, 0xff, 0xff) },
263 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1591, 0xff, 0xff, 0xff) },
264 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1592, 0xff, 0xff, 0xff) },
265 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1594, 0xff, 0xff, 0xff) },
266 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1596, 0xff, 0xff, 0xff) },
267 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1598, 0xff, 0xff, 0xff) },
268 -+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1600, 0xff, 0xff, 0xff) },
269 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2002, 0xff,
270 - 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_k3765_z_blacklist },
271 - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) },
272 -diff --git a/drivers/video/backlight/atmel-pwm-bl.c b/drivers/video/backlight/atmel-pwm-bl.c
273 -index 0393d82..f7447f7 100644
274 ---- a/drivers/video/backlight/atmel-pwm-bl.c
275 -+++ b/drivers/video/backlight/atmel-pwm-bl.c
276 -@@ -118,7 +118,7 @@ static const struct backlight_ops atmel_pwm_bl_ops = {
277 - .update_status = atmel_pwm_bl_set_intensity,
278 - };
279 -
280 --static int __init atmel_pwm_bl_probe(struct platform_device *pdev)
281 -+static int atmel_pwm_bl_probe(struct platform_device *pdev)
282 - {
283 - struct backlight_properties props;
284 - const struct atmel_pwm_bl_platform_data *pdata;
285 -@@ -202,7 +202,7 @@ err_free_mem:
286 - return retval;
287 - }
288 -
289 --static int __exit atmel_pwm_bl_remove(struct platform_device *pdev)
290 -+static int atmel_pwm_bl_remove(struct platform_device *pdev)
291 - {
292 - struct atmel_pwm_bl *pwmbl = platform_get_drvdata(pdev);
293 -
294 -@@ -220,10 +220,11 @@ static struct platform_driver atmel_pwm_bl_driver = {
295 - .name = "atmel-pwm-bl",
296 - },
297 - /* REVISIT add suspend() and resume() */
298 -- .remove = __exit_p(atmel_pwm_bl_remove),
299 -+ .probe = atmel_pwm_bl_probe,
300 -+ .remove = atmel_pwm_bl_remove,
301 - };
302 -
303 --module_platform_driver_probe(atmel_pwm_bl_driver, atmel_pwm_bl_probe);
304 -+module_platform_driver(atmel_pwm_bl_driver);
305 -
306 - MODULE_AUTHOR("Hans-Christian egtvedt <hans-christian.egtvedt@×××××.com>");
307 - MODULE_DESCRIPTION("Atmel PWM backlight driver");
308 -diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c
309 -index 8ac99b8..8d456dc 100644
310 ---- a/drivers/video/hyperv_fb.c
311 -+++ b/drivers/video/hyperv_fb.c
312 -@@ -795,12 +795,21 @@ static int hvfb_remove(struct hv_device *hdev)
313 - }
314 -
315 -
316 -+static DEFINE_PCI_DEVICE_TABLE(pci_stub_id_table) = {
317 -+ {
318 -+ .vendor = PCI_VENDOR_ID_MICROSOFT,
319 -+ .device = PCI_DEVICE_ID_HYPERV_VIDEO,
320 -+ },
321 -+ { /* end of list */ }
322 -+};
323 -+
324 - static const struct hv_vmbus_device_id id_table[] = {
325 - /* Synthetic Video Device GUID */
326 - {HV_SYNTHVID_GUID},
327 - {}
328 - };
329 -
330 -+MODULE_DEVICE_TABLE(pci, pci_stub_id_table);
331 - MODULE_DEVICE_TABLE(vmbus, id_table);
332 -
333 - static struct hv_driver hvfb_drv = {
334 -@@ -810,14 +819,43 @@ static struct hv_driver hvfb_drv = {
335 - .remove = hvfb_remove,
336 - };
337 -
338 -+static int hvfb_pci_stub_probe(struct pci_dev *pdev,
339 -+ const struct pci_device_id *ent)
340 -+{
341 -+ return 0;
342 -+}
343 -+
344 -+static void hvfb_pci_stub_remove(struct pci_dev *pdev)
345 -+{
346 -+}
347 -+
348 -+static struct pci_driver hvfb_pci_stub_driver = {
349 -+ .name = KBUILD_MODNAME,
350 -+ .id_table = pci_stub_id_table,
351 -+ .probe = hvfb_pci_stub_probe,
352 -+ .remove = hvfb_pci_stub_remove,
353 -+};
354 -
355 - static int __init hvfb_drv_init(void)
356 - {
357 -- return vmbus_driver_register(&hvfb_drv);
358 -+ int ret;
359 -+
360 -+ ret = vmbus_driver_register(&hvfb_drv);
361 -+ if (ret != 0)
362 -+ return ret;
363 -+
364 -+ ret = pci_register_driver(&hvfb_pci_stub_driver);
365 -+ if (ret != 0) {
366 -+ vmbus_driver_unregister(&hvfb_drv);
367 -+ return ret;
368 -+ }
369 -+
370 -+ return 0;
371 - }
372 -
373 - static void __exit hvfb_drv_exit(void)
374 - {
375 -+ pci_unregister_driver(&hvfb_pci_stub_driver);
376 - vmbus_driver_unregister(&hvfb_drv);
377 - }
378 -
379 -diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
380 -index 48ec25a..5e661a9 100644
381 ---- a/include/net/ip6_fib.h
382 -+++ b/include/net/ip6_fib.h
383 -@@ -165,6 +165,7 @@ static inline struct inet6_dev *ip6_dst_idev(struct dst_entry *dst)
384 - static inline void rt6_clean_expires(struct rt6_info *rt)
385 - {
386 - rt->rt6i_flags &= ~RTF_EXPIRES;
387 -+ rt->dst.expires = 0;
388 - }
389 -
390 - static inline void rt6_set_expires(struct rt6_info *rt, unsigned long expires)
391 -diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
392 -index 7974ba2..b778e96 100644
393 ---- a/kernel/trace/trace.c
394 -+++ b/kernel/trace/trace.c
395 -@@ -843,9 +843,12 @@ int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
396 - if (isspace(ch)) {
397 - parser->buffer[parser->idx] = 0;
398 - parser->cont = false;
399 -- } else {
400 -+ } else if (parser->idx < parser->size - 1) {
401 - parser->cont = true;
402 - parser->buffer[parser->idx++] = ch;
403 -+ } else {
404 -+ ret = -EINVAL;
405 -+ goto out;
406 - }
407 -
408 - *ppos += read;
409 -diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
410 -index 8d7d0dd..143b6fd 100644
411 ---- a/net/core/flow_dissector.c
412 -+++ b/net/core/flow_dissector.c
413 -@@ -40,7 +40,7 @@ again:
414 - struct iphdr _iph;
415 - ip:
416 - iph = skb_header_pointer(skb, nhoff, sizeof(_iph), &_iph);
417 -- if (!iph)
418 -+ if (!iph || iph->ihl < 5)
419 - return false;
420 -
421 - if (ip_is_fragment(iph))
422 -diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
423 -index a16b01b..068c8fb 100644
424 ---- a/net/ipv4/tcp_input.c
425 -+++ b/net/ipv4/tcp_input.c
426 -@@ -2856,7 +2856,8 @@ static inline bool tcp_ack_update_rtt(struct sock *sk, const int flag,
427 - * left edge of the send window.
428 - * See draft-ietf-tcplw-high-performance-00, section 3.3.
429 - */
430 -- if (seq_rtt < 0 && tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr)
431 -+ if (seq_rtt < 0 && tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr &&
432 -+ flag & FLAG_ACKED)
433 - seq_rtt = tcp_time_stamp - tp->rx_opt.rcv_tsecr;
434 -
435 - if (seq_rtt < 0)
436 -@@ -2871,14 +2872,19 @@ static inline bool tcp_ack_update_rtt(struct sock *sk, const int flag,
437 - }
438 -
439 - /* Compute time elapsed between (last) SYNACK and the ACK completing 3WHS. */
440 --static void tcp_synack_rtt_meas(struct sock *sk, struct request_sock *req)
441 -+static void tcp_synack_rtt_meas(struct sock *sk, const u32 synack_stamp)
442 - {
443 - struct tcp_sock *tp = tcp_sk(sk);
444 - s32 seq_rtt = -1;
445 -
446 -- if (tp->lsndtime && !tp->total_retrans)
447 -- seq_rtt = tcp_time_stamp - tp->lsndtime;
448 -- tcp_ack_update_rtt(sk, FLAG_SYN_ACKED, seq_rtt, -1);
449 -+ if (synack_stamp && !tp->total_retrans)
450 -+ seq_rtt = tcp_time_stamp - synack_stamp;
451 -+
452 -+ /* If the ACK acks both the SYNACK and the (Fast Open'd) data packets
453 -+ * sent in SYN_RECV, SYNACK RTT is the smooth RTT computed in tcp_ack()
454 -+ */
455 -+ if (!tp->srtt)
456 -+ tcp_ack_update_rtt(sk, FLAG_SYN_ACKED, seq_rtt, -1);
457 - }
458 -
459 - static void tcp_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
460 -@@ -2981,6 +2987,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
461 - s32 seq_rtt = -1;
462 - s32 ca_seq_rtt = -1;
463 - ktime_t last_ackt = net_invalid_timestamp();
464 -+ bool rtt_update;
465 -
466 - while ((skb = tcp_write_queue_head(sk)) && skb != tcp_send_head(sk)) {
467 - struct tcp_skb_cb *scb = TCP_SKB_CB(skb);
468 -@@ -3057,14 +3064,13 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
469 - if (skb && (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED))
470 - flag |= FLAG_SACK_RENEGING;
471 -
472 -- if (tcp_ack_update_rtt(sk, flag, seq_rtt, sack_rtt) ||
473 -- (flag & FLAG_ACKED))
474 -- tcp_rearm_rto(sk);
475 -+ rtt_update = tcp_ack_update_rtt(sk, flag, seq_rtt, sack_rtt);
476 -
477 - if (flag & FLAG_ACKED) {
478 - const struct tcp_congestion_ops *ca_ops
479 - = inet_csk(sk)->icsk_ca_ops;
480 -
481 -+ tcp_rearm_rto(sk);
482 - if (unlikely(icsk->icsk_mtup.probe_size &&
483 - !after(tp->mtu_probe.probe_seq_end, tp->snd_una))) {
484 - tcp_mtup_probe_success(sk);
485 -@@ -3103,6 +3109,13 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
486 -
487 - ca_ops->pkts_acked(sk, pkts_acked, rtt_us);
488 - }
489 -+ } else if (skb && rtt_update && sack_rtt >= 0 &&
490 -+ sack_rtt > (s32)(now - TCP_SKB_CB(skb)->when)) {
491 -+ /* Do not re-arm RTO if the sack RTT is measured from data sent
492 -+ * after when the head was last (re)transmitted. Otherwise the
493 -+ * timeout may continue to extend in loss recovery.
494 -+ */
495 -+ tcp_rearm_rto(sk);
496 - }
497 -
498 - #if FASTRETRANS_DEBUG > 0
499 -@@ -5587,6 +5600,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
500 - struct request_sock *req;
501 - int queued = 0;
502 - bool acceptable;
503 -+ u32 synack_stamp;
504 -
505 - tp->rx_opt.saw_tstamp = 0;
506 -
507 -@@ -5669,9 +5683,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
508 - * so release it.
509 - */
510 - if (req) {
511 -+ synack_stamp = tcp_rsk(req)->snt_synack;
512 - tp->total_retrans = req->num_retrans;
513 - reqsk_fastopen_remove(sk, req, false);
514 - } else {
515 -+ synack_stamp = tp->lsndtime;
516 - /* Make sure socket is routed, for correct metrics. */
517 - icsk->icsk_af_ops->rebuild_header(sk);
518 - tcp_init_congestion_control(sk);
519 -@@ -5694,7 +5710,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
520 - tp->snd_una = TCP_SKB_CB(skb)->ack_seq;
521 - tp->snd_wnd = ntohs(th->window) << tp->rx_opt.snd_wscale;
522 - tcp_init_wl(tp, TCP_SKB_CB(skb)->seq);
523 -- tcp_synack_rtt_meas(sk, req);
524 -+ tcp_synack_rtt_meas(sk, synack_stamp);
525 -
526 - if (tp->rx_opt.tstamp_ok)
527 - tp->advmss -= TCPOLEN_TSTAMP_ALIGNED;
528 -diff --git a/net/ipv4/tcp_offload.c b/net/ipv4/tcp_offload.c
529 -index 3a7525e..533c58a 100644
530 ---- a/net/ipv4/tcp_offload.c
531 -+++ b/net/ipv4/tcp_offload.c
532 -@@ -18,6 +18,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb,
533 - netdev_features_t features)
534 - {
535 - struct sk_buff *segs = ERR_PTR(-EINVAL);
536 -+ unsigned int sum_truesize = 0;
537 - struct tcphdr *th;
538 - unsigned int thlen;
539 - unsigned int seq;
540 -@@ -102,13 +103,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb,
541 - if (copy_destructor) {
542 - skb->destructor = gso_skb->destructor;
543 - skb->sk = gso_skb->sk;
544 -- /* {tcp|sock}_wfree() use exact truesize accounting :
545 -- * sum(skb->truesize) MUST be exactly be gso_skb->truesize
546 -- * So we account mss bytes of 'true size' for each segment.
547 -- * The last segment will contain the remaining.
548 -- */
549 -- skb->truesize = mss;
550 -- gso_skb->truesize -= mss;
551 -+ sum_truesize += skb->truesize;
552 - }
553 - skb = skb->next;
554 - th = tcp_hdr(skb);
555 -@@ -125,7 +120,9 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb,
556 - if (copy_destructor) {
557 - swap(gso_skb->sk, skb->sk);
558 - swap(gso_skb->destructor, skb->destructor);
559 -- swap(gso_skb->truesize, skb->truesize);
560 -+ sum_truesize += skb->truesize;
561 -+ atomic_add(sum_truesize - gso_skb->truesize,
562 -+ &skb->sk->sk_wmem_alloc);
563 - }
564 -
565 - delta = htonl(oldlen + (skb_tail_pointer(skb) -
566 -diff --git a/net/ipv6/route.c b/net/ipv6/route.c
567 -index f54e3a1..04e17b3 100644
568 ---- a/net/ipv6/route.c
569 -+++ b/net/ipv6/route.c
570 -@@ -1087,10 +1087,13 @@ static struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie)
571 - if (rt->rt6i_genid != rt_genid_ipv6(dev_net(rt->dst.dev)))
572 - return NULL;
573 -
574 -- if (rt->rt6i_node && (rt->rt6i_node->fn_sernum == cookie))
575 -- return dst;
576 -+ if (!rt->rt6i_node || (rt->rt6i_node->fn_sernum != cookie))
577 -+ return NULL;
578 -
579 -- return NULL;
580 -+ if (rt6_check_expired(rt))
581 -+ return NULL;
582 -+
583 -+ return dst;
584 - }
585 -
586 - static struct dst_entry *ip6_negative_advice(struct dst_entry *dst)
587 -diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
588 -index 666c668..1a6eef3 100644
589 ---- a/net/sctp/sm_sideeffect.c
590 -+++ b/net/sctp/sm_sideeffect.c
591 -@@ -860,7 +860,6 @@ static void sctp_cmd_delete_tcb(sctp_cmd_seq_t *cmds,
592 - (!asoc->temp) && (sk->sk_shutdown != SHUTDOWN_MASK))
593 - return;
594 -
595 -- BUG_ON(asoc->peer.primary_path == NULL);
596 - sctp_unhash_established(asoc);
597 - sctp_association_free(asoc);
598 - }
599 -diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
600 -index 50173d4..8d2d01b 100644
601 ---- a/sound/pci/hda/patch_hdmi.c
602 -+++ b/sound/pci/hda/patch_hdmi.c
603 -@@ -740,9 +740,10 @@ static int hdmi_manual_setup_channel_mapping(struct hda_codec *codec,
604 - static void hdmi_setup_fake_chmap(unsigned char *map, int ca)
605 - {
606 - int i;
607 -+ int ordered_ca = get_channel_allocation_order(ca);
608 - for (i = 0; i < 8; i++) {
609 -- if (i < channel_allocations[ca].channels)
610 -- map[i] = from_cea_slot((hdmi_channel_mapping[ca][i] >> 4) & 0x0f);
611 -+ if (i < channel_allocations[ordered_ca].channels)
612 -+ map[i] = from_cea_slot(hdmi_channel_mapping[ca][i] & 0x0f);
613 - else
614 - map[i] = 0;
615 - }