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 |
- } |