Magellan Linux

Contents of /trunk/kernel26-alx/patches-3.10/0179-3.10.80-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2672 - (show annotations) (download)
Tue Jul 21 16:46:35 2015 UTC (8 years, 9 months ago) by niro
File size: 40262 byte(s)
-3.10.84-alx-r1
1 diff --git a/Makefile b/Makefile
2 index e26cb1e56266..067433219984 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 3
7 PATCHLEVEL = 10
8 -SUBLEVEL = 79
9 +SUBLEVEL = 80
10 EXTRAVERSION =
11 NAME = TOSSUG Baby Fish
12
13 @@ -241,7 +241,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
14
15 HOSTCC = gcc
16 HOSTCXX = g++
17 -HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
18 +HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
19 HOSTCXXFLAGS = -O2
20
21 # Decide whether to build built-in, modular, or both.
22 @@ -373,7 +373,9 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
23 -fno-strict-aliasing -fno-common \
24 -Werror-implicit-function-declaration \
25 -Wno-format-security \
26 - -fno-delete-null-pointer-checks
27 + -fno-delete-null-pointer-checks \
28 + -std=gnu89
29 +
30 KBUILD_AFLAGS_KERNEL :=
31 KBUILD_CFLAGS_KERNEL :=
32 KBUILD_AFLAGS := -D__ASSEMBLY__
33 diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
34 index 75bd11386516..77730a37344e 100644
35 --- a/arch/arm/boot/dts/imx27.dtsi
36 +++ b/arch/arm/boot/dts/imx27.dtsi
37 @@ -290,7 +290,7 @@
38
39 fec: ethernet@1002b000 {
40 compatible = "fsl,imx27-fec";
41 - reg = <0x1002b000 0x4000>;
42 + reg = <0x1002b000 0x1000>;
43 interrupts = <50>;
44 clocks = <&clks 48>, <&clks 67>, <&clks 0>;
45 clock-names = "ipg", "ahb", "ptp";
46 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
47 index 4bc816a74a2e..f2646934c714 100644
48 --- a/arch/arm/kernel/entry-common.S
49 +++ b/arch/arm/kernel/entry-common.S
50 @@ -32,7 +32,9 @@ ret_fast_syscall:
51 UNWIND(.fnstart )
52 UNWIND(.cantunwind )
53 disable_irq @ disable interrupts
54 - ldr r1, [tsk, #TI_FLAGS]
55 + ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
56 + tst r1, #_TIF_SYSCALL_WORK
57 + bne __sys_trace_return
58 tst r1, #_TIF_WORK_MASK
59 bne fast_work_pending
60 asm_trace_hardirqs_on
61 diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
62 index f096e72262f4..1db685104ffc 100644
63 --- a/arch/powerpc/kernel/vmlinux.lds.S
64 +++ b/arch/powerpc/kernel/vmlinux.lds.S
65 @@ -213,6 +213,7 @@ SECTIONS
66 *(.opd)
67 }
68
69 + . = ALIGN(256);
70 .got : AT(ADDR(.got) - LOAD_OFFSET) {
71 __toc_start = .;
72 #ifndef CONFIG_RELOCATABLE
73 diff --git a/arch/s390/crypto/ghash_s390.c b/arch/s390/crypto/ghash_s390.c
74 index 7940dc90e80b..b258110da952 100644
75 --- a/arch/s390/crypto/ghash_s390.c
76 +++ b/arch/s390/crypto/ghash_s390.c
77 @@ -16,11 +16,12 @@
78 #define GHASH_DIGEST_SIZE 16
79
80 struct ghash_ctx {
81 - u8 icv[16];
82 - u8 key[16];
83 + u8 key[GHASH_BLOCK_SIZE];
84 };
85
86 struct ghash_desc_ctx {
87 + u8 icv[GHASH_BLOCK_SIZE];
88 + u8 key[GHASH_BLOCK_SIZE];
89 u8 buffer[GHASH_BLOCK_SIZE];
90 u32 bytes;
91 };
92 @@ -28,8 +29,10 @@ struct ghash_desc_ctx {
93 static int ghash_init(struct shash_desc *desc)
94 {
95 struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
96 + struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
97
98 memset(dctx, 0, sizeof(*dctx));
99 + memcpy(dctx->key, ctx->key, GHASH_BLOCK_SIZE);
100
101 return 0;
102 }
103 @@ -45,7 +48,6 @@ static int ghash_setkey(struct crypto_shash *tfm,
104 }
105
106 memcpy(ctx->key, key, GHASH_BLOCK_SIZE);
107 - memset(ctx->icv, 0, GHASH_BLOCK_SIZE);
108
109 return 0;
110 }
111 @@ -54,7 +56,6 @@ static int ghash_update(struct shash_desc *desc,
112 const u8 *src, unsigned int srclen)
113 {
114 struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
115 - struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
116 unsigned int n;
117 u8 *buf = dctx->buffer;
118 int ret;
119 @@ -70,7 +71,7 @@ static int ghash_update(struct shash_desc *desc,
120 src += n;
121
122 if (!dctx->bytes) {
123 - ret = crypt_s390_kimd(KIMD_GHASH, ctx, buf,
124 + ret = crypt_s390_kimd(KIMD_GHASH, dctx, buf,
125 GHASH_BLOCK_SIZE);
126 if (ret != GHASH_BLOCK_SIZE)
127 return -EIO;
128 @@ -79,7 +80,7 @@ static int ghash_update(struct shash_desc *desc,
129
130 n = srclen & ~(GHASH_BLOCK_SIZE - 1);
131 if (n) {
132 - ret = crypt_s390_kimd(KIMD_GHASH, ctx, src, n);
133 + ret = crypt_s390_kimd(KIMD_GHASH, dctx, src, n);
134 if (ret != n)
135 return -EIO;
136 src += n;
137 @@ -94,7 +95,7 @@ static int ghash_update(struct shash_desc *desc,
138 return 0;
139 }
140
141 -static int ghash_flush(struct ghash_ctx *ctx, struct ghash_desc_ctx *dctx)
142 +static int ghash_flush(struct ghash_desc_ctx *dctx)
143 {
144 u8 *buf = dctx->buffer;
145 int ret;
146 @@ -104,24 +105,24 @@ static int ghash_flush(struct ghash_ctx *ctx, struct ghash_desc_ctx *dctx)
147
148 memset(pos, 0, dctx->bytes);
149
150 - ret = crypt_s390_kimd(KIMD_GHASH, ctx, buf, GHASH_BLOCK_SIZE);
151 + ret = crypt_s390_kimd(KIMD_GHASH, dctx, buf, GHASH_BLOCK_SIZE);
152 if (ret != GHASH_BLOCK_SIZE)
153 return -EIO;
154 +
155 + dctx->bytes = 0;
156 }
157
158 - dctx->bytes = 0;
159 return 0;
160 }
161
162 static int ghash_final(struct shash_desc *desc, u8 *dst)
163 {
164 struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
165 - struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);
166 int ret;
167
168 - ret = ghash_flush(ctx, dctx);
169 + ret = ghash_flush(dctx);
170 if (!ret)
171 - memcpy(dst, ctx->icv, GHASH_BLOCK_SIZE);
172 + memcpy(dst, dctx->icv, GHASH_BLOCK_SIZE);
173 return ret;
174 }
175
176 diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
177 index e14b1f8667bb..5a75ebf3d69f 100644
178 --- a/arch/x86/kvm/mmu.c
179 +++ b/arch/x86/kvm/mmu.c
180 @@ -3975,7 +3975,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
181 ++vcpu->kvm->stat.mmu_pte_write;
182 kvm_mmu_audit(vcpu, AUDIT_PRE_PTE_WRITE);
183
184 - mask.cr0_wp = mask.cr4_pae = mask.nxe = 1;
185 + mask.cr0_wp = mask.cr4_pae = mask.nxe = mask.smep_andnot_wp = 1;
186 for_each_gfn_indirect_valid_sp(vcpu->kvm, sp, gfn) {
187 if (detect_write_misaligned(sp, gpa, bytes) ||
188 detect_write_flooding(sp)) {
189 diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
190 index e72186340fec..11441ad69de3 100644
191 --- a/drivers/acpi/osl.c
192 +++ b/drivers/acpi/osl.c
193 @@ -173,7 +173,7 @@ static void __init acpi_request_region (struct acpi_generic_address *gas,
194 request_mem_region(addr, length, desc);
195 }
196
197 -static int __init acpi_reserve_resources(void)
198 +static void __init acpi_reserve_resources(void)
199 {
200 acpi_request_region(&acpi_gbl_FADT.xpm1a_event_block, acpi_gbl_FADT.pm1_event_length,
201 "ACPI PM1a_EVT_BLK");
202 @@ -202,10 +202,7 @@ static int __init acpi_reserve_resources(void)
203 if (!(acpi_gbl_FADT.gpe1_block_length & 0x1))
204 acpi_request_region(&acpi_gbl_FADT.xgpe1_block,
205 acpi_gbl_FADT.gpe1_block_length, "ACPI GPE1_BLK");
206 -
207 - return 0;
208 }
209 -device_initcall(acpi_reserve_resources);
210
211 void acpi_os_printf(const char *fmt, ...)
212 {
213 @@ -1727,6 +1724,7 @@ acpi_status __init acpi_os_initialize(void)
214
215 acpi_status __init acpi_os_initialize1(void)
216 {
217 + acpi_reserve_resources();
218 kacpid_wq = alloc_workqueue("kacpid", 0, 1);
219 kacpi_notify_wq = alloc_workqueue("kacpi_notify", 0, 1);
220 kacpi_hotplug_wq = alloc_workqueue("kacpi_hotplug", 0, 1);
221 diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
222 index 8905e03a53a2..cf5f35877559 100644
223 --- a/drivers/ata/libahci.c
224 +++ b/drivers/ata/libahci.c
225 @@ -1684,8 +1684,7 @@ static void ahci_handle_port_interrupt(struct ata_port *ap,
226 if (unlikely(resetting))
227 status &= ~PORT_IRQ_BAD_PMP;
228
229 - /* if LPM is enabled, PHYRDY doesn't mean anything */
230 - if (ap->link.lpm_policy > ATA_LPM_MAX_POWER) {
231 + if (sata_lpm_ignore_phy_events(&ap->link)) {
232 status &= ~PORT_IRQ_PHYRDY;
233 ahci_scr_write(&ap->link, SCR_ERROR, SERR_PHYRDY_CHG);
234 }
235 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
236 index ca7c23d58a03..5d47a040129a 100644
237 --- a/drivers/ata/libata-core.c
238 +++ b/drivers/ata/libata-core.c
239 @@ -6800,6 +6800,38 @@ u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val,
240 return tmp;
241 }
242
243 +/**
244 + * sata_lpm_ignore_phy_events - test if PHY event should be ignored
245 + * @link: Link receiving the event
246 + *
247 + * Test whether the received PHY event has to be ignored or not.
248 + *
249 + * LOCKING:
250 + * None:
251 + *
252 + * RETURNS:
253 + * True if the event has to be ignored.
254 + */
255 +bool sata_lpm_ignore_phy_events(struct ata_link *link)
256 +{
257 + unsigned long lpm_timeout = link->last_lpm_change +
258 + msecs_to_jiffies(ATA_TMOUT_SPURIOUS_PHY);
259 +
260 + /* if LPM is enabled, PHYRDY doesn't mean anything */
261 + if (link->lpm_policy > ATA_LPM_MAX_POWER)
262 + return true;
263 +
264 + /* ignore the first PHY event after the LPM policy changed
265 + * as it is might be spurious
266 + */
267 + if ((link->flags & ATA_LFLAG_CHANGED) &&
268 + time_before(jiffies, lpm_timeout))
269 + return true;
270 +
271 + return false;
272 +}
273 +EXPORT_SYMBOL_GPL(sata_lpm_ignore_phy_events);
274 +
275 /*
276 * Dummy port_ops
277 */
278 diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
279 index 370462fa8e01..063036d876b0 100644
280 --- a/drivers/ata/libata-eh.c
281 +++ b/drivers/ata/libata-eh.c
282 @@ -3481,6 +3481,9 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
283 }
284 }
285
286 + link->last_lpm_change = jiffies;
287 + link->flags |= ATA_LFLAG_CHANGED;
288 +
289 return 0;
290
291 fail:
292 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
293 index 47d8b68c5004..0ebe0c3f5074 100644
294 --- a/drivers/gpu/drm/i915/i915_drv.h
295 +++ b/drivers/gpu/drm/i915/i915_drv.h
296 @@ -1804,7 +1804,7 @@ void i915_teardown_sysfs(struct drm_device *dev_priv);
297 /* intel_i2c.c */
298 extern int intel_setup_gmbus(struct drm_device *dev);
299 extern void intel_teardown_gmbus(struct drm_device *dev);
300 -extern inline bool intel_gmbus_is_port_valid(unsigned port)
301 +static inline bool intel_gmbus_is_port_valid(unsigned port)
302 {
303 return (port >= GMBUS_PORT_SSC && port <= GMBUS_PORT_DPD);
304 }
305 @@ -1813,7 +1813,7 @@ extern struct i2c_adapter *intel_gmbus_get_adapter(
306 struct drm_i915_private *dev_priv, unsigned port);
307 extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
308 extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
309 -extern inline bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter)
310 +static inline bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter)
311 {
312 return container_of(adapter, struct intel_gmbus, adapter)->force_bit;
313 }
314 diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c
315 index c64d3d497c50..d7bb12ad4945 100644
316 --- a/drivers/hwmon/ntc_thermistor.c
317 +++ b/drivers/hwmon/ntc_thermistor.c
318 @@ -181,8 +181,10 @@ static struct ntc_thermistor_platform_data *
319 ntc_thermistor_parse_dt(struct platform_device *pdev)
320 {
321 struct iio_channel *chan;
322 + enum iio_chan_type type;
323 struct device_node *np = pdev->dev.of_node;
324 struct ntc_thermistor_platform_data *pdata;
325 + int ret;
326
327 if (!np)
328 return NULL;
329 @@ -195,6 +197,13 @@ ntc_thermistor_parse_dt(struct platform_device *pdev)
330 if (IS_ERR(chan))
331 return ERR_CAST(chan);
332
333 + ret = iio_get_channel_type(chan, &type);
334 + if (ret < 0)
335 + return ERR_PTR(ret);
336 +
337 + if (type != IIO_VOLTAGE)
338 + return ERR_PTR(-EINVAL);
339 +
340 if (of_property_read_u32(np, "pullup-uv", &pdata->pullup_uv))
341 return ERR_PTR(-ENODEV);
342 if (of_property_read_u32(np, "pullup-ohm", &pdata->pullup_ohm))
343 diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
344 index 1af7df263368..dbd4f5ad3343 100644
345 --- a/drivers/input/mouse/elantech.c
346 +++ b/drivers/input/mouse/elantech.c
347 @@ -314,7 +314,7 @@ static void elantech_report_semi_mt_data(struct input_dev *dev,
348 unsigned int x2, unsigned int y2)
349 {
350 elantech_set_slot(dev, 0, num_fingers != 0, x1, y1);
351 - elantech_set_slot(dev, 1, num_fingers == 2, x2, y2);
352 + elantech_set_slot(dev, 1, num_fingers >= 2, x2, y2);
353 }
354
355 /*
356 diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
357 index 0bf1e4edf04d..19da22249bd8 100644
358 --- a/drivers/lguest/core.c
359 +++ b/drivers/lguest/core.c
360 @@ -176,7 +176,7 @@ static void unmap_switcher(void)
361 bool lguest_address_ok(const struct lguest *lg,
362 unsigned long addr, unsigned long len)
363 {
364 - return (addr+len) / PAGE_SIZE < lg->pfn_limit && (addr+len >= addr);
365 + return addr+len <= lg->pfn_limit * PAGE_SIZE && (addr+len >= addr);
366 }
367
368 /*
369 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
370 index 1b6986ce5da9..ef18ca745b1e 100644
371 --- a/drivers/md/raid5.c
372 +++ b/drivers/md/raid5.c
373 @@ -1701,7 +1701,8 @@ static int resize_stripes(struct r5conf *conf, int newsize)
374
375 conf->slab_cache = sc;
376 conf->active_name = 1-conf->active_name;
377 - conf->pool_size = newsize;
378 + if (!err)
379 + conf->pool_size = newsize;
380 return err;
381 }
382
383 diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
384 index 84b054b08462..e742761679fa 100644
385 --- a/drivers/mmc/host/atmel-mci.c
386 +++ b/drivers/mmc/host/atmel-mci.c
387 @@ -1295,7 +1295,7 @@ static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
388
389 if (ios->clock) {
390 unsigned int clock_min = ~0U;
391 - u32 clkdiv;
392 + int clkdiv;
393
394 spin_lock_bh(&host->lock);
395 if (!host->mode_reg) {
396 @@ -1320,7 +1320,12 @@ static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
397 /* Calculate clock divider */
398 if (host->caps.has_odd_clk_div) {
399 clkdiv = DIV_ROUND_UP(host->bus_hz, clock_min) - 2;
400 - if (clkdiv > 511) {
401 + if (clkdiv < 0) {
402 + dev_warn(&mmc->class_dev,
403 + "clock %u too fast; using %lu\n",
404 + clock_min, host->bus_hz / 2);
405 + clkdiv = 0;
406 + } else if (clkdiv > 511) {
407 dev_warn(&mmc->class_dev,
408 "clock %u too slow; using %lu\n",
409 clock_min, host->bus_hz / (511 + 2));
410 diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
411 index 400b8679796a..44b6715ccfb1 100644
412 --- a/drivers/net/wireless/rt2x00/rt2800usb.c
413 +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
414 @@ -1020,6 +1020,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
415 { USB_DEVICE(0x07d1, 0x3c16) },
416 { USB_DEVICE(0x07d1, 0x3c17) },
417 { USB_DEVICE(0x2001, 0x3c1b) },
418 + { USB_DEVICE(0x2001, 0x3c25) },
419 /* Draytek */
420 { USB_DEVICE(0x07fa, 0x7712) },
421 /* DVICO */
422 diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c
423 index 57b12a5883a0..3ad79736b255 100644
424 --- a/drivers/net/wireless/rtlwifi/usb.c
425 +++ b/drivers/net/wireless/rtlwifi/usb.c
426 @@ -119,7 +119,7 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request,
427
428 do {
429 status = usb_control_msg(udev, pipe, request, reqtype, value,
430 - index, pdata, len, 0); /*max. timeout*/
431 + index, pdata, len, 1000);
432 if (status < 0) {
433 /* firmware download is checksumed, don't retry */
434 if ((value >= FW_8192C_START_ADDRESS &&
435 diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211.h b/drivers/staging/rtl8187se/ieee80211/ieee80211.h
436 index 8fc9f588b056..9fdd566e8d4a 100644
437 --- a/drivers/staging/rtl8187se/ieee80211/ieee80211.h
438 +++ b/drivers/staging/rtl8187se/ieee80211/ieee80211.h
439 @@ -1447,12 +1447,12 @@ extern void ieee80211_sta_ps_send_null_frame(struct ieee80211_device *ieee, shor
440
441 extern const long ieee80211_wlan_frequencies[];
442
443 -extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
444 +static inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
445 {
446 ieee->scans++;
447 }
448
449 -extern inline int ieee80211_get_scans(struct ieee80211_device *ieee)
450 +static inline int ieee80211_get_scans(struct ieee80211_device *ieee)
451 {
452 return ieee->scans;
453 }
454 diff --git a/drivers/staging/rtl8192e/rtllib.h b/drivers/staging/rtl8192e/rtllib.h
455 index 3485ef1dfab1..f35948ec5ebf 100644
456 --- a/drivers/staging/rtl8192e/rtllib.h
457 +++ b/drivers/staging/rtl8192e/rtllib.h
458 @@ -2761,7 +2761,6 @@ extern void rtllib_stop_scan(struct rtllib_device *ieee);
459 extern bool rtllib_act_scanning(struct rtllib_device *ieee, bool sync_scan);
460 extern void rtllib_stop_scan_syncro(struct rtllib_device *ieee);
461 extern void rtllib_start_scan_syncro(struct rtllib_device *ieee, u8 is_mesh);
462 -extern inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee);
463 extern u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee);
464 extern void rtllib_sta_ps_send_null_frame(struct rtllib_device *ieee,
465 short pwr);
466 @@ -2943,12 +2942,12 @@ void rtllib_softmac_scan_syncro(struct rtllib_device *ieee, u8 is_mesh);
467
468 extern const long rtllib_wlan_frequencies[];
469
470 -extern inline void rtllib_increment_scans(struct rtllib_device *ieee)
471 +static inline void rtllib_increment_scans(struct rtllib_device *ieee)
472 {
473 ieee->scans++;
474 }
475
476 -extern inline int rtllib_get_scans(struct rtllib_device *ieee)
477 +static inline int rtllib_get_scans(struct rtllib_device *ieee)
478 {
479 return ieee->scans;
480 }
481 diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
482 index 4feecec8609c..0e4e83758d6a 100644
483 --- a/drivers/staging/rtl8192e/rtllib_softmac.c
484 +++ b/drivers/staging/rtl8192e/rtllib_softmac.c
485 @@ -341,7 +341,7 @@ inline void softmac_ps_mgmt_xmit(struct sk_buff *skb,
486 }
487 }
488
489 -inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee)
490 +static inline struct sk_buff *rtllib_probe_req(struct rtllib_device *ieee)
491 {
492 unsigned int len, rate_len;
493 u8 *tag;
494 diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211.h b/drivers/staging/rtl8192u/ieee80211/ieee80211.h
495 index 210898c8e66c..e1339c33888f 100644
496 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211.h
497 +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211.h
498 @@ -2250,7 +2250,7 @@ static inline void *ieee80211_priv(struct net_device *dev)
499 return ((struct ieee80211_device *)netdev_priv(dev))->priv;
500 }
501
502 -extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
503 +static inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
504 {
505 /* Single white space is for Linksys APs */
506 if (essid_len == 1 && essid[0] == ' ')
507 @@ -2266,7 +2266,7 @@ extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
508 return 1;
509 }
510
511 -extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode)
512 +static inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode)
513 {
514 /*
515 * It is possible for both access points and our device to support
516 @@ -2292,7 +2292,7 @@ extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mod
517 return 0;
518 }
519
520 -extern inline int ieee80211_get_hdrlen(u16 fc)
521 +static inline int ieee80211_get_hdrlen(u16 fc)
522 {
523 int hdrlen = IEEE80211_3ADDR_LEN;
524
525 @@ -2578,12 +2578,12 @@ void ieee80211_softmac_scan_syncro(struct ieee80211_device *ieee);
526
527 extern const long ieee80211_wlan_frequencies[];
528
529 -extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
530 +static inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
531 {
532 ieee->scans++;
533 }
534
535 -extern inline int ieee80211_get_scans(struct ieee80211_device *ieee)
536 +static inline int ieee80211_get_scans(struct ieee80211_device *ieee)
537 {
538 return ieee->scans;
539 }
540 diff --git a/drivers/staging/rtl8712/ieee80211.h b/drivers/staging/rtl8712/ieee80211.h
541 index da4000e49da6..8269be80437a 100644
542 --- a/drivers/staging/rtl8712/ieee80211.h
543 +++ b/drivers/staging/rtl8712/ieee80211.h
544 @@ -734,7 +734,7 @@ enum ieee80211_state {
545 #define IEEE_G (1<<2)
546 #define IEEE_MODE_MASK (IEEE_A|IEEE_B|IEEE_G)
547
548 -extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
549 +static inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
550 {
551 /* Single white space is for Linksys APs */
552 if (essid_len == 1 && essid[0] == ' ')
553 @@ -748,7 +748,7 @@ extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
554 return 1;
555 }
556
557 -extern inline int ieee80211_get_hdrlen(u16 fc)
558 +static inline int ieee80211_get_hdrlen(u16 fc)
559 {
560 int hdrlen = 24;
561
562 diff --git a/drivers/staging/wlags49_h2/wl_internal.h b/drivers/staging/wlags49_h2/wl_internal.h
563 index b23078164149..11b00c39a98c 100644
564 --- a/drivers/staging/wlags49_h2/wl_internal.h
565 +++ b/drivers/staging/wlags49_h2/wl_internal.h
566 @@ -1014,7 +1014,7 @@ static inline void wl_unlock(struct wl_private *lp,
567 /* Interrupt enable disable functions */
568 /********************************************************************/
569
570 -extern inline void wl_act_int_on(struct wl_private *lp)
571 +static inline void wl_act_int_on(struct wl_private *lp)
572 {
573 /*
574 * Only do something when the driver is handling
575 @@ -1026,7 +1026,7 @@ extern inline void wl_act_int_on(struct wl_private *lp)
576 }
577 }
578
579 -extern inline void wl_act_int_off(struct wl_private *lp)
580 +static inline void wl_act_int_off(struct wl_private *lp)
581 {
582 /*
583 * Only do something when the driver is handling
584 diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
585 index b1e77ff9a636..244776bec1c7 100644
586 --- a/drivers/target/target_core_pscsi.c
587 +++ b/drivers/target/target_core_pscsi.c
588 @@ -520,6 +520,7 @@ static int pscsi_configure_device(struct se_device *dev)
589 " pdv_host_id: %d\n", pdv->pdv_host_id);
590 return -EINVAL;
591 }
592 + pdv->pdv_lld_host = sh;
593 }
594 } else {
595 if (phv->phv_mode == PHV_VIRTUAL_HOST_ID) {
596 @@ -602,6 +603,8 @@ static void pscsi_free_device(struct se_device *dev)
597 if ((phv->phv_mode == PHV_LLD_SCSI_HOST_NO) &&
598 (phv->phv_lld_host != NULL))
599 scsi_host_put(phv->phv_lld_host);
600 + else if (pdv->pdv_lld_host)
601 + scsi_host_put(pdv->pdv_lld_host);
602
603 if ((sd->type == TYPE_DISK) || (sd->type == TYPE_ROM))
604 scsi_device_put(sd);
605 diff --git a/drivers/target/target_core_pscsi.h b/drivers/target/target_core_pscsi.h
606 index 1bd757dff8ee..820d3052b775 100644
607 --- a/drivers/target/target_core_pscsi.h
608 +++ b/drivers/target/target_core_pscsi.h
609 @@ -45,6 +45,7 @@ struct pscsi_dev_virt {
610 int pdv_lun_id;
611 struct block_device *pdv_bd;
612 struct scsi_device *pdv_sd;
613 + struct Scsi_Host *pdv_lld_host;
614 } ____cacheline_aligned;
615
616 typedef enum phv_modes {
617 diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c
618 index 80e7f75a56c7..3dab424515ef 100644
619 --- a/drivers/usb/gadget/configfs.c
620 +++ b/drivers/usb/gadget/configfs.c
621 @@ -757,6 +757,7 @@ static void purge_configs_funcs(struct gadget_info *gi)
622 }
623 }
624 c->next_interface_id = 0;
625 + memset(c->interface, 0, sizeof(c->interface));
626 c->superspeed = 0;
627 c->highspeed = 0;
628 c->fullspeed = 0;
629 diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
630 index bc7a886e3c36..30533952b4a3 100644
631 --- a/drivers/usb/host/xhci-ring.c
632 +++ b/drivers/usb/host/xhci-ring.c
633 @@ -2144,8 +2144,13 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
634 break;
635 case COMP_DEV_ERR:
636 case COMP_STALL:
637 + frame->status = -EPROTO;
638 + skip_td = true;
639 + break;
640 case COMP_TX_ERR:
641 frame->status = -EPROTO;
642 + if (event_trb != td->last_trb)
643 + return 0;
644 skip_td = true;
645 break;
646 case COMP_STOP:
647 @@ -2762,7 +2767,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd)
648 xhci_halt(xhci);
649 hw_died:
650 spin_unlock(&xhci->lock);
651 - return -ESHUTDOWN;
652 + return IRQ_HANDLED;
653 }
654
655 /*
656 diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
657 index 373d4dada565..ed8de724b285 100644
658 --- a/drivers/usb/host/xhci.h
659 +++ b/drivers/usb/host/xhci.h
660 @@ -1237,7 +1237,7 @@ union xhci_trb {
661 * since the command ring is 64-byte aligned.
662 * It must also be greater than 16.
663 */
664 -#define TRBS_PER_SEGMENT 64
665 +#define TRBS_PER_SEGMENT 256
666 /* Allow two commands + a link TRB, along with any reserved command TRBs */
667 #define MAX_RSVD_CMD_TRBS (TRBS_PER_SEGMENT - 3)
668 #define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16)
669 diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
670 index 79e9ea005c63..691a82105180 100644
671 --- a/drivers/usb/serial/cp210x.c
672 +++ b/drivers/usb/serial/cp210x.c
673 @@ -127,6 +127,7 @@ static const struct usb_device_id id_table[] = {
674 { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */
675 { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */
676 { USB_DEVICE(0x10C4, 0x8977) }, /* CEL MeshWorks DevKit Device */
677 + { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */
678 { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
679 { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
680 { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
681 diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
682 index de3e15d8eb10..33313caed504 100644
683 --- a/drivers/usb/serial/pl2303.c
684 +++ b/drivers/usb/serial/pl2303.c
685 @@ -63,7 +63,6 @@ static const struct usb_device_id id_table[] = {
686 { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) },
687 { USB_DEVICE(SITECOM_VENDOR_ID, SITECOM_PRODUCT_ID) },
688 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_ID) },
689 - { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) },
690 { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_SX1) },
691 { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) },
692 { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X75) },
693 diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
694 index 71fd9da1d6e7..e3b7af8adfb7 100644
695 --- a/drivers/usb/serial/pl2303.h
696 +++ b/drivers/usb/serial/pl2303.h
697 @@ -62,10 +62,6 @@
698 #define ALCATEL_VENDOR_ID 0x11f7
699 #define ALCATEL_PRODUCT_ID 0x02df
700
701 -/* Samsung I330 phone cradle */
702 -#define SAMSUNG_VENDOR_ID 0x04e8
703 -#define SAMSUNG_PRODUCT_ID 0x8001
704 -
705 #define SIEMENS_VENDOR_ID 0x11f5
706 #define SIEMENS_PRODUCT_ID_SX1 0x0001
707 #define SIEMENS_PRODUCT_ID_X65 0x0003
708 diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
709 index 9910aa2edf4b..727905de0ba4 100644
710 --- a/drivers/usb/serial/visor.c
711 +++ b/drivers/usb/serial/visor.c
712 @@ -96,7 +96,7 @@ static struct usb_device_id id_table [] = {
713 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
714 { USB_DEVICE(ACER_VENDOR_ID, ACER_S10_ID),
715 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
716 - { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID),
717 + { USB_DEVICE_INTERFACE_CLASS(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID, 0xff),
718 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
719 { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID),
720 .driver_info = (kernel_ulong_t)&palm_os_4_probe },
721 diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
722 index 7f625306ea80..821e1e2f70f6 100644
723 --- a/drivers/usb/storage/unusual_devs.h
724 +++ b/drivers/usb/storage/unusual_devs.h
725 @@ -760,6 +760,13 @@ UNUSUAL_DEV( 0x059f, 0x0643, 0x0000, 0x0000,
726 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
727 US_FL_GO_SLOW ),
728
729 +/* Reported by Christian Schaller <cschalle@redhat.com> */
730 +UNUSUAL_DEV( 0x059f, 0x0651, 0x0000, 0x0000,
731 + "LaCie",
732 + "External HDD",
733 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
734 + US_FL_NO_WP_DETECT ),
735 +
736 /* Submitted by Joel Bourquard <numlock@freesurf.ch>
737 * Some versions of this device need the SubClass and Protocol overrides
738 * while others don't.
739 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
740 index 53f620a4350e..618bcc84a09e 100644
741 --- a/fs/binfmt_elf.c
742 +++ b/fs/binfmt_elf.c
743 @@ -824,7 +824,7 @@ static int load_elf_binary(struct linux_binprm *bprm)
744 total_size = total_mapping_size(elf_phdata,
745 loc->elf_ex.e_phnum);
746 if (!total_size) {
747 - error = -EINVAL;
748 + retval = -EINVAL;
749 goto out_free_dentry;
750 }
751 }
752 diff --git a/fs/dcache.c b/fs/dcache.c
753 index efa4602e064f..e2800926ae05 100644
754 --- a/fs/dcache.c
755 +++ b/fs/dcache.c
756 @@ -1179,13 +1179,13 @@ ascend:
757 /* might go back up the wrong parent if we have had a rename. */
758 if (!locked && read_seqretry(&rename_lock, seq))
759 goto rename_retry;
760 - next = child->d_child.next;
761 - while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) {
762 + /* go into the first sibling still alive */
763 + do {
764 + next = child->d_child.next;
765 if (next == &this_parent->d_subdirs)
766 goto ascend;
767 child = list_entry(next, struct dentry, d_child);
768 - next = next->next;
769 - }
770 + } while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED));
771 rcu_read_unlock();
772 goto resume;
773 }
774 diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
775 index 7fbd1c5b74af..df633bb25909 100644
776 --- a/fs/ext4/extents.c
777 +++ b/fs/ext4/extents.c
778 @@ -363,7 +363,7 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext)
779 ext4_lblk_t lblock = le32_to_cpu(ext->ee_block);
780 ext4_lblk_t last = lblock + len - 1;
781
782 - if (lblock > last)
783 + if (len == 0 || lblock > last)
784 return 0;
785 return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len);
786 }
787 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
788 index 9e3d8dd6c40a..8a277505a3be 100644
789 --- a/fs/ext4/inode.c
790 +++ b/fs/ext4/inode.c
791 @@ -1032,7 +1032,8 @@ retry_journal:
792 ext4_journal_stop(handle);
793 goto retry_grab;
794 }
795 - wait_on_page_writeback(page);
796 + /* In case writeback began while the page was unlocked */
797 + wait_for_stable_page(page);
798
799 if (ext4_should_dioread_nolock(inode))
800 ret = __block_write_begin(page, pos, len, ext4_get_block_write);
801 @@ -2729,7 +2730,7 @@ retry_journal:
802 goto retry_grab;
803 }
804 /* In case writeback began while the page was unlocked */
805 - wait_on_page_writeback(page);
806 + wait_for_stable_page(page);
807
808 ret = __block_write_begin(page, pos, len, ext4_da_get_block_prep);
809 if (ret < 0) {
810 diff --git a/fs/fhandle.c b/fs/fhandle.c
811 index 999ff5c3cab0..d59712dfa3e7 100644
812 --- a/fs/fhandle.c
813 +++ b/fs/fhandle.c
814 @@ -195,8 +195,9 @@ static int handle_to_path(int mountdirfd, struct file_handle __user *ufh,
815 goto out_err;
816 }
817 /* copy the full handle */
818 - if (copy_from_user(handle, ufh,
819 - sizeof(struct file_handle) +
820 + *handle = f_handle;
821 + if (copy_from_user(&handle->f_handle,
822 + &ufh->f_handle,
823 f_handle.handle_bytes)) {
824 retval = -EFAULT;
825 goto out_handle;
826 diff --git a/fs/omfs/inode.c b/fs/omfs/inode.c
827 index d8b0afde2179..2dba0caf1f4a 100644
828 --- a/fs/omfs/inode.c
829 +++ b/fs/omfs/inode.c
830 @@ -361,7 +361,7 @@ nomem:
831 }
832
833 enum {
834 - Opt_uid, Opt_gid, Opt_umask, Opt_dmask, Opt_fmask
835 + Opt_uid, Opt_gid, Opt_umask, Opt_dmask, Opt_fmask, Opt_err
836 };
837
838 static const match_table_t tokens = {
839 @@ -370,6 +370,7 @@ static const match_table_t tokens = {
840 {Opt_umask, "umask=%o"},
841 {Opt_dmask, "dmask=%o"},
842 {Opt_fmask, "fmask=%o"},
843 + {Opt_err, NULL},
844 };
845
846 static int parse_options(char *options, struct omfs_sb_info *sbi)
847 diff --git a/include/linux/libata.h b/include/linux/libata.h
848 index cc82cfb66259..8e5d45fa83cf 100644
849 --- a/include/linux/libata.h
850 +++ b/include/linux/libata.h
851 @@ -187,6 +187,7 @@ enum {
852 ATA_LFLAG_SW_ACTIVITY = (1 << 7), /* keep activity stats */
853 ATA_LFLAG_NO_LPM = (1 << 8), /* disable LPM on this link */
854 ATA_LFLAG_RST_ONCE = (1 << 9), /* limit recovery to one reset */
855 + ATA_LFLAG_CHANGED = (1 << 10), /* LPM state changed on this link */
856
857 /* struct ata_port flags */
858 ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */
859 @@ -289,6 +290,12 @@ enum {
860 */
861 ATA_TMOUT_PMP_SRST_WAIT = 5000,
862
863 + /* When the LPM policy is set to ATA_LPM_MAX_POWER, there might
864 + * be a spurious PHY event, so ignore the first PHY event that
865 + * occurs within 10s after the policy change.
866 + */
867 + ATA_TMOUT_SPURIOUS_PHY = 10000,
868 +
869 /* ATA bus states */
870 BUS_UNKNOWN = 0,
871 BUS_DMA = 1,
872 @@ -736,6 +743,8 @@ struct ata_link {
873 struct ata_eh_context eh_context;
874
875 struct ata_device device[ATA_MAX_DEVICES];
876 +
877 + unsigned long last_lpm_change; /* when last LPM change happened */
878 };
879 #define ATA_LINK_CLEAR_BEGIN offsetof(struct ata_link, active_tag)
880 #define ATA_LINK_CLEAR_END offsetof(struct ata_link, device[0])
881 @@ -1085,6 +1094,7 @@ extern struct ata_device *ata_dev_pair(struct ata_device *adev);
882 extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
883 extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap);
884 extern void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_q);
885 +extern bool sata_lpm_ignore_phy_events(struct ata_link *link);
886
887 extern int ata_cable_40wire(struct ata_port *ap);
888 extern int ata_cable_80wire(struct ata_port *ap);
889 diff --git a/lib/strnlen_user.c b/lib/strnlen_user.c
890 index a28df5206d95..11649615c505 100644
891 --- a/lib/strnlen_user.c
892 +++ b/lib/strnlen_user.c
893 @@ -57,7 +57,8 @@ static inline long do_strnlen_user(const char __user *src, unsigned long count,
894 return res + find_zero(data) + 1 - align;
895 }
896 res += sizeof(unsigned long);
897 - if (unlikely(max < sizeof(unsigned long)))
898 + /* We already handled 'unsigned long' bytes. Did we do it all ? */
899 + if (unlikely(max <= sizeof(unsigned long)))
900 break;
901 max -= sizeof(unsigned long);
902 if (unlikely(__get_user(c,(unsigned long __user *)(src+res))))
903 diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
904 index 1b51d9216e7e..7665ce336e2b 100644
905 --- a/net/ceph/osd_client.c
906 +++ b/net/ceph/osd_client.c
907 @@ -1702,20 +1702,29 @@ static void kick_requests(struct ceph_osd_client *osdc, bool force_resend,
908 err = __map_request(osdc, req,
909 force_resend || force_resend_writes);
910 dout("__map_request returned %d\n", err);
911 - if (err == 0)
912 - continue; /* no change and no osd was specified */
913 if (err < 0)
914 continue; /* hrm! */
915 - if (req->r_osd == NULL) {
916 - dout("tid %llu maps to no valid osd\n", req->r_tid);
917 - needmap++; /* request a newer map */
918 - continue;
919 - }
920 + if (req->r_osd == NULL || err > 0) {
921 + if (req->r_osd == NULL) {
922 + dout("lingering %p tid %llu maps to no osd\n",
923 + req, req->r_tid);
924 + /*
925 + * A homeless lingering request makes
926 + * no sense, as it's job is to keep
927 + * a particular OSD connection open.
928 + * Request a newer map and kick the
929 + * request, knowing that it won't be
930 + * resent until we actually get a map
931 + * that can tell us where to send it.
932 + */
933 + needmap++;
934 + }
935
936 - dout("kicking lingering %p tid %llu osd%d\n", req, req->r_tid,
937 - req->r_osd ? req->r_osd->o_osd : -1);
938 - __register_request(osdc, req);
939 - __unregister_linger_request(osdc, req);
940 + dout("kicking lingering %p tid %llu osd%d\n", req,
941 + req->r_tid, req->r_osd ? req->r_osd->o_osd : -1);
942 + __register_request(osdc, req);
943 + __unregister_linger_request(osdc, req);
944 + }
945 }
946 reset_changed_osds(osdc);
947 mutex_unlock(&osdc->request_mutex);
948 diff --git a/net/socket.c b/net/socket.c
949 index fc90b4f0da3c..53b6e411f7a4 100644
950 --- a/net/socket.c
951 +++ b/net/socket.c
952 @@ -1988,14 +1988,12 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
953 int err, ctl_len, total_len;
954
955 err = -EFAULT;
956 - if (MSG_CMSG_COMPAT & flags) {
957 - if (get_compat_msghdr(msg_sys, msg_compat))
958 - return -EFAULT;
959 - } else {
960 + if (MSG_CMSG_COMPAT & flags)
961 + err = get_compat_msghdr(msg_sys, msg_compat);
962 + else
963 err = copy_msghdr_from_user(msg_sys, msg);
964 - if (err)
965 - return err;
966 - }
967 + if (err)
968 + return err;
969
970 if (msg_sys->msg_iovlen > UIO_FASTIOV) {
971 err = -EMSGSIZE;
972 @@ -2200,14 +2198,12 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
973 struct sockaddr __user *uaddr;
974 int __user *uaddr_len;
975
976 - if (MSG_CMSG_COMPAT & flags) {
977 - if (get_compat_msghdr(msg_sys, msg_compat))
978 - return -EFAULT;
979 - } else {
980 + if (MSG_CMSG_COMPAT & flags)
981 + err = get_compat_msghdr(msg_sys, msg_compat);
982 + else
983 err = copy_msghdr_from_user(msg_sys, msg);
984 - if (err)
985 - return err;
986 - }
987 + if (err)
988 + return err;
989
990 if (msg_sys->msg_iovlen > UIO_FASTIOV) {
991 err = -EMSGSIZE;
992 diff --git a/net/sunrpc/auth_gss/gss_rpc_xdr.c b/net/sunrpc/auth_gss/gss_rpc_xdr.c
993 index f0f78c5f1c7d..e0062c544ac8 100644
994 --- a/net/sunrpc/auth_gss/gss_rpc_xdr.c
995 +++ b/net/sunrpc/auth_gss/gss_rpc_xdr.c
996 @@ -794,20 +794,26 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp,
997 {
998 u32 value_follows;
999 int err;
1000 + struct page *scratch;
1001 +
1002 + scratch = alloc_page(GFP_KERNEL);
1003 + if (!scratch)
1004 + return -ENOMEM;
1005 + xdr_set_scratch_buffer(xdr, page_address(scratch), PAGE_SIZE);
1006
1007 /* res->status */
1008 err = gssx_dec_status(xdr, &res->status);
1009 if (err)
1010 - return err;
1011 + goto out_free;
1012
1013 /* res->context_handle */
1014 err = gssx_dec_bool(xdr, &value_follows);
1015 if (err)
1016 - return err;
1017 + goto out_free;
1018 if (value_follows) {
1019 err = gssx_dec_ctx(xdr, res->context_handle);
1020 if (err)
1021 - return err;
1022 + goto out_free;
1023 } else {
1024 res->context_handle = NULL;
1025 }
1026 @@ -815,11 +821,11 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp,
1027 /* res->output_token */
1028 err = gssx_dec_bool(xdr, &value_follows);
1029 if (err)
1030 - return err;
1031 + goto out_free;
1032 if (value_follows) {
1033 err = gssx_dec_buffer(xdr, res->output_token);
1034 if (err)
1035 - return err;
1036 + goto out_free;
1037 } else {
1038 res->output_token = NULL;
1039 }
1040 @@ -827,14 +833,17 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp,
1041 /* res->delegated_cred_handle */
1042 err = gssx_dec_bool(xdr, &value_follows);
1043 if (err)
1044 - return err;
1045 + goto out_free;
1046 if (value_follows) {
1047 /* we do not support upcall servers sending this data. */
1048 - return -EINVAL;
1049 + err = -EINVAL;
1050 + goto out_free;
1051 }
1052
1053 /* res->options */
1054 err = gssx_dec_option_array(xdr, &res->options);
1055
1056 +out_free:
1057 + __free_page(scratch);
1058 return err;
1059 }
1060 diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
1061 index fab909908a42..3cda292f74e4 100644
1062 --- a/sound/pci/hda/patch_conexant.c
1063 +++ b/sound/pci/hda/patch_conexant.c
1064 @@ -3490,6 +3490,14 @@ static const struct hda_codec_preset snd_hda_preset_conexant[] = {
1065 .patch = patch_conexant_auto },
1066 { .id = 0x14f150b9, .name = "CX20665",
1067 .patch = patch_conexant_auto },
1068 + { .id = 0x14f150f1, .name = "CX20721",
1069 + .patch = patch_conexant_auto },
1070 + { .id = 0x14f150f2, .name = "CX20722",
1071 + .patch = patch_conexant_auto },
1072 + { .id = 0x14f150f3, .name = "CX20723",
1073 + .patch = patch_conexant_auto },
1074 + { .id = 0x14f150f4, .name = "CX20724",
1075 + .patch = patch_conexant_auto },
1076 { .id = 0x14f1510f, .name = "CX20751/2",
1077 .patch = patch_conexant_auto },
1078 { .id = 0x14f15110, .name = "CX20751/2",
1079 @@ -3524,6 +3532,10 @@ MODULE_ALIAS("snd-hda-codec-id:14f150ab");
1080 MODULE_ALIAS("snd-hda-codec-id:14f150ac");
1081 MODULE_ALIAS("snd-hda-codec-id:14f150b8");
1082 MODULE_ALIAS("snd-hda-codec-id:14f150b9");
1083 +MODULE_ALIAS("snd-hda-codec-id:14f150f1");
1084 +MODULE_ALIAS("snd-hda-codec-id:14f150f2");
1085 +MODULE_ALIAS("snd-hda-codec-id:14f150f3");
1086 +MODULE_ALIAS("snd-hda-codec-id:14f150f4");
1087 MODULE_ALIAS("snd-hda-codec-id:14f1510f");
1088 MODULE_ALIAS("snd-hda-codec-id:14f15110");
1089 MODULE_ALIAS("snd-hda-codec-id:14f15111");
1090 diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
1091 index a8eb7fe2766e..444019696f85 100644
1092 --- a/sound/pci/hda/patch_realtek.c
1093 +++ b/sound/pci/hda/patch_realtek.c
1094 @@ -3736,6 +3736,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1095 SND_PCI_QUIRK_VENDOR(0x1025, "Acer Aspire", ALC271_FIXUP_DMIC),
1096 SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
1097 SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
1098 + SND_PCI_QUIRK(0x10cf, 0x1757, "Lifebook E752", ALC269_FIXUP_LIFEBOOK_HP_PIN),
1099 SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
1100 SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
1101 SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE),
1102 diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
1103 index 8a8d9364e87f..d0fc21559a85 100644
1104 --- a/sound/soc/codecs/mc13783.c
1105 +++ b/sound/soc/codecs/mc13783.c
1106 @@ -604,14 +604,14 @@ static int mc13783_probe(struct snd_soc_codec *codec)
1107 AUDIO_SSI_SEL, 0);
1108 else
1109 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_CODEC,
1110 - 0, AUDIO_SSI_SEL);
1111 + AUDIO_SSI_SEL, AUDIO_SSI_SEL);
1112
1113 if (priv->dac_ssi_port == MC13783_SSI1_PORT)
1114 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC,
1115 AUDIO_SSI_SEL, 0);
1116 else
1117 mc13xxx_reg_rmw(priv->mc13xxx, MC13783_AUDIO_DAC,
1118 - 0, AUDIO_SSI_SEL);
1119 + AUDIO_SSI_SEL, AUDIO_SSI_SEL);
1120
1121 mc13xxx_unlock(priv->mc13xxx);
1122
1123 diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
1124 index 4a8decf85a4a..39f65bc9de56 100644
1125 --- a/sound/soc/codecs/wm8960.c
1126 +++ b/sound/soc/codecs/wm8960.c
1127 @@ -392,7 +392,7 @@ static const struct snd_soc_dapm_route audio_paths[] = {
1128 { "Right Input Mixer", "Boost Switch", "Right Boost Mixer", },
1129 { "Right Input Mixer", NULL, "RINPUT1", }, /* Really Boost Switch */
1130 { "Right Input Mixer", NULL, "RINPUT2" },
1131 - { "Right Input Mixer", NULL, "LINPUT3" },
1132 + { "Right Input Mixer", NULL, "RINPUT3" },
1133
1134 { "Left ADC", NULL, "Left Input Mixer" },
1135 { "Right ADC", NULL, "Right Input Mixer" },
1136 diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
1137 index 29e95f93d482..6e746c7474bf 100644
1138 --- a/sound/soc/codecs/wm8994.c
1139 +++ b/sound/soc/codecs/wm8994.c
1140 @@ -2679,7 +2679,7 @@ static struct {
1141 };
1142
1143 static int fs_ratios[] = {
1144 - 64, 128, 192, 256, 348, 512, 768, 1024, 1408, 1536
1145 + 64, 128, 192, 256, 384, 512, 768, 1024, 1408, 1536
1146 };
1147
1148 static int bclk_divs[] = {