Annotation of /trunk/kernel-lts/patches-3.4/0158-3.4.59-all-fixes.patch
Parent Directory | Revision Log
Revision 2275 -
(hide annotations)
(download)
Mon Sep 2 08:09:55 2013 UTC (11 years ago) by niro
File size: 33439 byte(s)
Mon Sep 2 08:09:55 2013 UTC (11 years ago) by niro
File size: 33439 byte(s)
-linux-3.4.59
1 | niro | 2275 | diff --git a/arch/alpha/Makefile b/arch/alpha/Makefile |
2 | index 4759fe7..2cc3cc5 100644 | ||
3 | --- a/arch/alpha/Makefile | ||
4 | +++ b/arch/alpha/Makefile | ||
5 | @@ -12,7 +12,7 @@ NM := $(NM) -B | ||
6 | |||
7 | LDFLAGS_vmlinux := -static -N #-relax | ||
8 | CHECKFLAGS += -D__alpha__ -m64 | ||
9 | -cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data | ||
10 | +cflags-y := -pipe -mno-fp-regs -ffixed-8 | ||
11 | cflags-y += $(call cc-option, -fno-jump-tables) | ||
12 | |||
13 | cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4 | ||
14 | diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c | ||
15 | index a99ed7a..ac73066 100644 | ||
16 | --- a/arch/arm/kernel/perf_event.c | ||
17 | +++ b/arch/arm/kernel/perf_event.c | ||
18 | @@ -109,7 +109,12 @@ armpmu_map_cache_event(const unsigned (*cache_map) | ||
19 | static int | ||
20 | armpmu_map_event(const unsigned (*event_map)[PERF_COUNT_HW_MAX], u64 config) | ||
21 | { | ||
22 | - int mapping = (*event_map)[config]; | ||
23 | + int mapping; | ||
24 | + | ||
25 | + if (config >= PERF_COUNT_HW_MAX) | ||
26 | + return -ENOENT; | ||
27 | + | ||
28 | + mapping = (*event_map)[config]; | ||
29 | return mapping == HW_OP_UNSUPPORTED ? -ENOENT : mapping; | ||
30 | } | ||
31 | |||
32 | @@ -319,6 +324,9 @@ validate_event(struct pmu_hw_events *hw_events, | ||
33 | struct hw_perf_event fake_event = event->hw; | ||
34 | struct pmu *leader_pmu = event->group_leader->pmu; | ||
35 | |||
36 | + if (is_software_event(event)) | ||
37 | + return 1; | ||
38 | + | ||
39 | if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF) | ||
40 | return 1; | ||
41 | |||
42 | diff --git a/arch/cris/arch-v10/lib/Makefile b/arch/cris/arch-v10/lib/Makefile | ||
43 | index 36e9a9c..725153e 100644 | ||
44 | --- a/arch/cris/arch-v10/lib/Makefile | ||
45 | +++ b/arch/cris/arch-v10/lib/Makefile | ||
46 | @@ -2,8 +2,5 @@ | ||
47 | # Makefile for Etrax-specific library files.. | ||
48 | # | ||
49 | |||
50 | - | ||
51 | -EXTRA_AFLAGS := -traditional | ||
52 | - | ||
53 | lib-y = checksum.o checksumcopy.o string.o usercopy.o memset.o csumcpfruser.o | ||
54 | |||
55 | diff --git a/arch/cris/include/asm/posix_types.h b/arch/cris/include/asm/posix_types.h | ||
56 | index 72b3cd6..234891c 100644 | ||
57 | --- a/arch/cris/include/asm/posix_types.h | ||
58 | +++ b/arch/cris/include/asm/posix_types.h | ||
59 | @@ -33,4 +33,6 @@ typedef int __kernel_ptrdiff_t; | ||
60 | typedef unsigned short __kernel_old_dev_t; | ||
61 | #define __kernel_old_dev_t __kernel_old_dev_t | ||
62 | |||
63 | +#include <asm-generic/posix_types.h> | ||
64 | + | ||
65 | #endif /* __ARCH_CRIS_POSIX_TYPES_H */ | ||
66 | diff --git a/arch/cris/kernel/vmlinux.lds.S b/arch/cris/kernel/vmlinux.lds.S | ||
67 | index a6990cb..a68b983 100644 | ||
68 | --- a/arch/cris/kernel/vmlinux.lds.S | ||
69 | +++ b/arch/cris/kernel/vmlinux.lds.S | ||
70 | @@ -52,6 +52,7 @@ SECTIONS | ||
71 | |||
72 | EXCEPTION_TABLE(4) | ||
73 | |||
74 | + _sdata = .; | ||
75 | RODATA | ||
76 | |||
77 | . = ALIGN (4); | ||
78 | diff --git a/arch/frv/include/asm/thread_info.h b/arch/frv/include/asm/thread_info.h | ||
79 | index 92d83ea..aaea388 100644 | ||
80 | --- a/arch/frv/include/asm/thread_info.h | ||
81 | +++ b/arch/frv/include/asm/thread_info.h | ||
82 | @@ -21,8 +21,6 @@ | ||
83 | |||
84 | #define THREAD_SIZE 8192 | ||
85 | |||
86 | -#define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR | ||
87 | - | ||
88 | /* | ||
89 | * low level task data that entry.S needs immediate access to | ||
90 | * - this struct should fit entirely inside of one cache line | ||
91 | diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c | ||
92 | index 3941cbc..c4dc7a4 100644 | ||
93 | --- a/arch/frv/kernel/process.c | ||
94 | +++ b/arch/frv/kernel/process.c | ||
95 | @@ -44,21 +44,6 @@ asmlinkage void ret_from_fork(void); | ||
96 | void (*pm_power_off)(void); | ||
97 | EXPORT_SYMBOL(pm_power_off); | ||
98 | |||
99 | -struct task_struct *alloc_task_struct_node(int node) | ||
100 | -{ | ||
101 | - struct task_struct *p = kmalloc_node(THREAD_SIZE, GFP_KERNEL, node); | ||
102 | - | ||
103 | - if (p) | ||
104 | - atomic_set((atomic_t *)(p+1), 1); | ||
105 | - return p; | ||
106 | -} | ||
107 | - | ||
108 | -void free_task_struct(struct task_struct *p) | ||
109 | -{ | ||
110 | - if (atomic_dec_and_test((atomic_t *)(p+1))) | ||
111 | - kfree(p); | ||
112 | -} | ||
113 | - | ||
114 | static void core_sleep_idle(void) | ||
115 | { | ||
116 | #ifdef LED_DEBUG_SLEEP | ||
117 | diff --git a/arch/m68k/emu/natfeat.c b/arch/m68k/emu/natfeat.c | ||
118 | index 2291a7d..fa277ae 100644 | ||
119 | --- a/arch/m68k/emu/natfeat.c | ||
120 | +++ b/arch/m68k/emu/natfeat.c | ||
121 | @@ -18,9 +18,11 @@ | ||
122 | #include <asm/machdep.h> | ||
123 | #include <asm/natfeat.h> | ||
124 | |||
125 | +extern long nf_get_id2(const char *feature_name); | ||
126 | + | ||
127 | asm("\n" | ||
128 | -" .global nf_get_id,nf_call\n" | ||
129 | -"nf_get_id:\n" | ||
130 | +" .global nf_get_id2,nf_call\n" | ||
131 | +"nf_get_id2:\n" | ||
132 | " .short 0x7300\n" | ||
133 | " rts\n" | ||
134 | "nf_call:\n" | ||
135 | @@ -29,12 +31,25 @@ asm("\n" | ||
136 | "1: moveq.l #0,%d0\n" | ||
137 | " rts\n" | ||
138 | " .section __ex_table,\"a\"\n" | ||
139 | -" .long nf_get_id,1b\n" | ||
140 | +" .long nf_get_id2,1b\n" | ||
141 | " .long nf_call,1b\n" | ||
142 | " .previous"); | ||
143 | -EXPORT_SYMBOL_GPL(nf_get_id); | ||
144 | EXPORT_SYMBOL_GPL(nf_call); | ||
145 | |||
146 | +long nf_get_id(const char *feature_name) | ||
147 | +{ | ||
148 | + /* feature_name may be in vmalloc()ed memory, so make a copy */ | ||
149 | + char name_copy[32]; | ||
150 | + size_t n; | ||
151 | + | ||
152 | + n = strlcpy(name_copy, feature_name, sizeof(name_copy)); | ||
153 | + if (n >= sizeof(name_copy)) | ||
154 | + return 0; | ||
155 | + | ||
156 | + return nf_get_id2(name_copy); | ||
157 | +} | ||
158 | +EXPORT_SYMBOL_GPL(nf_get_id); | ||
159 | + | ||
160 | void nfprint(const char *fmt, ...) | ||
161 | { | ||
162 | static char buf[256]; | ||
163 | diff --git a/arch/m68k/include/asm/div64.h b/arch/m68k/include/asm/div64.h | ||
164 | index 444ea8a..ef881cf 100644 | ||
165 | --- a/arch/m68k/include/asm/div64.h | ||
166 | +++ b/arch/m68k/include/asm/div64.h | ||
167 | @@ -15,16 +15,17 @@ | ||
168 | unsigned long long n64; \ | ||
169 | } __n; \ | ||
170 | unsigned long __rem, __upper; \ | ||
171 | + unsigned long __base = (base); \ | ||
172 | \ | ||
173 | __n.n64 = (n); \ | ||
174 | if ((__upper = __n.n32[0])) { \ | ||
175 | asm ("divul.l %2,%1:%0" \ | ||
176 | - : "=d" (__n.n32[0]), "=d" (__upper) \ | ||
177 | - : "d" (base), "0" (__n.n32[0])); \ | ||
178 | + : "=d" (__n.n32[0]), "=d" (__upper) \ | ||
179 | + : "d" (__base), "0" (__n.n32[0])); \ | ||
180 | } \ | ||
181 | asm ("divu.l %2,%1:%0" \ | ||
182 | - : "=d" (__n.n32[1]), "=d" (__rem) \ | ||
183 | - : "d" (base), "1" (__upper), "0" (__n.n32[1])); \ | ||
184 | + : "=d" (__n.n32[1]), "=d" (__rem) \ | ||
185 | + : "d" (__base), "1" (__upper), "0" (__n.n32[1])); \ | ||
186 | (n) = __n.n64; \ | ||
187 | __rem; \ | ||
188 | }) | ||
189 | diff --git a/arch/microblaze/configs/mmu_defconfig b/arch/microblaze/configs/mmu_defconfig | ||
190 | index b3f5eec..a470f57 100644 | ||
191 | --- a/arch/microblaze/configs/mmu_defconfig | ||
192 | +++ b/arch/microblaze/configs/mmu_defconfig | ||
193 | @@ -1,25 +1,22 @@ | ||
194 | CONFIG_EXPERIMENTAL=y | ||
195 | CONFIG_SYSVIPC=y | ||
196 | +CONFIG_POSIX_MQUEUE=y | ||
197 | +CONFIG_FHANDLE=y | ||
198 | +CONFIG_AUDIT=y | ||
199 | +CONFIG_AUDIT_LOGINUID_IMMUTABLE=y | ||
200 | CONFIG_IKCONFIG=y | ||
201 | CONFIG_IKCONFIG_PROC=y | ||
202 | +CONFIG_SYSFS_DEPRECATED=y | ||
203 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
204 | -CONFIG_BLK_DEV_INITRD=y | ||
205 | -CONFIG_INITRAMFS_SOURCE="rootfs.cpio" | ||
206 | -CONFIG_INITRAMFS_COMPRESSION_GZIP=y | ||
207 | -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
208 | -CONFIG_EXPERT=y | ||
209 | CONFIG_KALLSYMS_ALL=y | ||
210 | -CONFIG_KALLSYMS_EXTRA_PASS=y | ||
211 | -# CONFIG_HOTPLUG is not set | ||
212 | # CONFIG_BASE_FULL is not set | ||
213 | -# CONFIG_FUTEX is not set | ||
214 | -# CONFIG_EPOLL is not set | ||
215 | -# CONFIG_SIGNALFD is not set | ||
216 | -# CONFIG_SHMEM is not set | ||
217 | +CONFIG_EMBEDDED=y | ||
218 | CONFIG_SLAB=y | ||
219 | CONFIG_MODULES=y | ||
220 | CONFIG_MODULE_UNLOAD=y | ||
221 | # CONFIG_BLK_DEV_BSG is not set | ||
222 | +CONFIG_PARTITION_ADVANCED=y | ||
223 | +# CONFIG_EFI_PARTITION is not set | ||
224 | CONFIG_OPT_LIB_ASM=y | ||
225 | CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 | ||
226 | CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 | ||
227 | @@ -37,33 +34,53 @@ CONFIG_UNIX=y | ||
228 | CONFIG_INET=y | ||
229 | # CONFIG_INET_LRO is not set | ||
230 | # CONFIG_IPV6 is not set | ||
231 | +CONFIG_MTD=y | ||
232 | CONFIG_PROC_DEVICETREE=y | ||
233 | CONFIG_BLK_DEV_RAM=y | ||
234 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
235 | CONFIG_NETDEVICES=y | ||
236 | -CONFIG_NET_ETHERNET=y | ||
237 | CONFIG_XILINX_EMACLITE=y | ||
238 | +CONFIG_XILINX_LL_TEMAC=y | ||
239 | # CONFIG_INPUT is not set | ||
240 | # CONFIG_SERIO is not set | ||
241 | # CONFIG_VT is not set | ||
242 | +CONFIG_SERIAL_8250=y | ||
243 | +CONFIG_SERIAL_8250_CONSOLE=y | ||
244 | CONFIG_SERIAL_UARTLITE=y | ||
245 | CONFIG_SERIAL_UARTLITE_CONSOLE=y | ||
246 | # CONFIG_HW_RANDOM is not set | ||
247 | +CONFIG_XILINX_HWICAP=y | ||
248 | +CONFIG_I2C=y | ||
249 | +CONFIG_I2C_XILINX=y | ||
250 | +CONFIG_SPI=y | ||
251 | +CONFIG_SPI_XILINX=y | ||
252 | +CONFIG_GPIOLIB=y | ||
253 | +CONFIG_GPIO_SYSFS=y | ||
254 | +CONFIG_GPIO_XILINX=y | ||
255 | # CONFIG_HWMON is not set | ||
256 | +CONFIG_WATCHDOG=y | ||
257 | +CONFIG_XILINX_WATCHDOG=y | ||
258 | +CONFIG_FB=y | ||
259 | +CONFIG_FB_XILINX=y | ||
260 | # CONFIG_USB_SUPPORT is not set | ||
261 | +CONFIG_UIO=y | ||
262 | +CONFIG_UIO_PDRV=y | ||
263 | +CONFIG_UIO_PDRV_GENIRQ=y | ||
264 | +CONFIG_UIO_DMEM_GENIRQ=y | ||
265 | CONFIG_EXT2_FS=y | ||
266 | # CONFIG_DNOTIFY is not set | ||
267 | +CONFIG_CRAMFS=y | ||
268 | +CONFIG_ROMFS_FS=y | ||
269 | CONFIG_NFS_FS=y | ||
270 | -CONFIG_NFS_V3=y | ||
271 | CONFIG_CIFS=y | ||
272 | CONFIG_CIFS_STATS=y | ||
273 | CONFIG_CIFS_STATS2=y | ||
274 | -CONFIG_PARTITION_ADVANCED=y | ||
275 | -CONFIG_DEBUG_KERNEL=y | ||
276 | CONFIG_DETECT_HUNG_TASK=y | ||
277 | CONFIG_DEBUG_SLAB=y | ||
278 | CONFIG_DEBUG_SPINLOCK=y | ||
279 | CONFIG_DEBUG_INFO=y | ||
280 | -# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
281 | CONFIG_EARLY_PRINTK=y | ||
282 | +CONFIG_KEYS=y | ||
283 | +CONFIG_ENCRYPTED_KEYS=y | ||
284 | +CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
285 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
286 | diff --git a/arch/microblaze/configs/nommu_defconfig b/arch/microblaze/configs/nommu_defconfig | ||
287 | index 0249e4b..5454a6d 100644 | ||
288 | --- a/arch/microblaze/configs/nommu_defconfig | ||
289 | +++ b/arch/microblaze/configs/nommu_defconfig | ||
290 | @@ -1,41 +1,40 @@ | ||
291 | CONFIG_EXPERIMENTAL=y | ||
292 | CONFIG_SYSVIPC=y | ||
293 | CONFIG_POSIX_MQUEUE=y | ||
294 | +CONFIG_FHANDLE=y | ||
295 | +CONFIG_AUDIT=y | ||
296 | +CONFIG_AUDIT_LOGINUID_IMMUTABLE=y | ||
297 | CONFIG_BSD_PROCESS_ACCT=y | ||
298 | CONFIG_BSD_PROCESS_ACCT_V3=y | ||
299 | CONFIG_IKCONFIG=y | ||
300 | CONFIG_IKCONFIG_PROC=y | ||
301 | +CONFIG_SYSFS_DEPRECATED=y | ||
302 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
303 | -CONFIG_EXPERT=y | ||
304 | CONFIG_KALLSYMS_ALL=y | ||
305 | -CONFIG_KALLSYMS_EXTRA_PASS=y | ||
306 | -# CONFIG_HOTPLUG is not set | ||
307 | # CONFIG_BASE_FULL is not set | ||
308 | +CONFIG_EMBEDDED=y | ||
309 | CONFIG_SLAB=y | ||
310 | CONFIG_MODULES=y | ||
311 | CONFIG_MODULE_UNLOAD=y | ||
312 | # CONFIG_BLK_DEV_BSG is not set | ||
313 | -# CONFIG_OPT_LIB_FUNCTION is not set | ||
314 | +CONFIG_PARTITION_ADVANCED=y | ||
315 | +# CONFIG_EFI_PARTITION is not set | ||
316 | CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 | ||
317 | CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 | ||
318 | CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 | ||
319 | CONFIG_XILINX_MICROBLAZE0_USE_DIV=1 | ||
320 | CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2 | ||
321 | CONFIG_XILINX_MICROBLAZE0_USE_FPU=2 | ||
322 | -CONFIG_HIGH_RES_TIMERS=y | ||
323 | CONFIG_HZ_100=y | ||
324 | CONFIG_CMDLINE_BOOL=y | ||
325 | -CONFIG_BINFMT_FLAT=y | ||
326 | +CONFIG_CMDLINE_FORCE=y | ||
327 | CONFIG_NET=y | ||
328 | CONFIG_PACKET=y | ||
329 | CONFIG_UNIX=y | ||
330 | CONFIG_INET=y | ||
331 | # CONFIG_INET_LRO is not set | ||
332 | # CONFIG_IPV6 is not set | ||
333 | -# CONFIG_PREVENT_FIRMWARE_BUILD is not set | ||
334 | CONFIG_MTD=y | ||
335 | -CONFIG_MTD_CONCAT=y | ||
336 | -CONFIG_MTD_PARTITIONS=y | ||
337 | CONFIG_MTD_CMDLINE_PARTS=y | ||
338 | CONFIG_MTD_CHAR=y | ||
339 | CONFIG_MTD_BLOCK=y | ||
340 | @@ -45,41 +44,55 @@ CONFIG_MTD_CFI_AMDSTD=y | ||
341 | CONFIG_MTD_RAM=y | ||
342 | CONFIG_MTD_UCLINUX=y | ||
343 | CONFIG_PROC_DEVICETREE=y | ||
344 | -CONFIG_BLK_DEV_NBD=y | ||
345 | CONFIG_BLK_DEV_RAM=y | ||
346 | +CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
347 | CONFIG_NETDEVICES=y | ||
348 | -CONFIG_NET_ETHERNET=y | ||
349 | +CONFIG_XILINX_EMACLITE=y | ||
350 | +CONFIG_XILINX_LL_TEMAC=y | ||
351 | # CONFIG_INPUT is not set | ||
352 | # CONFIG_SERIO is not set | ||
353 | # CONFIG_VT is not set | ||
354 | +CONFIG_SERIAL_8250=y | ||
355 | +CONFIG_SERIAL_8250_CONSOLE=y | ||
356 | CONFIG_SERIAL_UARTLITE=y | ||
357 | CONFIG_SERIAL_UARTLITE_CONSOLE=y | ||
358 | -CONFIG_HW_RANDOM=y | ||
359 | +# CONFIG_HW_RANDOM is not set | ||
360 | +CONFIG_XILINX_HWICAP=y | ||
361 | +CONFIG_I2C=y | ||
362 | +CONFIG_I2C_XILINX=y | ||
363 | +CONFIG_SPI=y | ||
364 | +CONFIG_SPI_XILINX=y | ||
365 | +CONFIG_GPIOLIB=y | ||
366 | +CONFIG_GPIO_SYSFS=y | ||
367 | +CONFIG_GPIO_XILINX=y | ||
368 | # CONFIG_HWMON is not set | ||
369 | -CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
370 | +CONFIG_WATCHDOG=y | ||
371 | +CONFIG_XILINX_WATCHDOG=y | ||
372 | +CONFIG_FB=y | ||
373 | +CONFIG_FB_XILINX=y | ||
374 | +# CONFIG_USB_SUPPORT is not set | ||
375 | +CONFIG_UIO=y | ||
376 | +CONFIG_UIO_PDRV=y | ||
377 | +CONFIG_UIO_PDRV_GENIRQ=y | ||
378 | +CONFIG_UIO_DMEM_GENIRQ=y | ||
379 | CONFIG_EXT2_FS=y | ||
380 | # CONFIG_DNOTIFY is not set | ||
381 | CONFIG_CRAMFS=y | ||
382 | CONFIG_ROMFS_FS=y | ||
383 | CONFIG_NFS_FS=y | ||
384 | -CONFIG_NFS_V3=y | ||
385 | CONFIG_NFS_V3_ACL=y | ||
386 | -CONFIG_UNUSED_SYMBOLS=y | ||
387 | -CONFIG_DEBUG_FS=y | ||
388 | -CONFIG_DEBUG_KERNEL=y | ||
389 | -CONFIG_DEBUG_SHIRQ=y | ||
390 | +CONFIG_NLS=y | ||
391 | CONFIG_DETECT_HUNG_TASK=y | ||
392 | -CONFIG_SCHEDSTATS=y | ||
393 | -CONFIG_TIMER_STATS=y | ||
394 | -CONFIG_DEBUG_OBJECTS=y | ||
395 | -CONFIG_DEBUG_OBJECTS_SELFTEST=y | ||
396 | -CONFIG_DEBUG_OBJECTS_FREE=y | ||
397 | -CONFIG_DEBUG_OBJECTS_TIMERS=y | ||
398 | +CONFIG_DEBUG_SLAB=y | ||
399 | +CONFIG_DEBUG_SPINLOCK=y | ||
400 | CONFIG_DEBUG_INFO=y | ||
401 | -CONFIG_DEBUG_LIST=y | ||
402 | -CONFIG_DEBUG_SG=y | ||
403 | -# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
404 | -CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
405 | CONFIG_EARLY_PRINTK=y | ||
406 | +CONFIG_KEYS=y | ||
407 | +CONFIG_ENCRYPTED_KEYS=y | ||
408 | +CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
409 | +CONFIG_CRYPTO_ECB=y | ||
410 | +CONFIG_CRYPTO_MD4=y | ||
411 | +CONFIG_CRYPTO_MD5=y | ||
412 | +CONFIG_CRYPTO_ARC4=y | ||
413 | +CONFIG_CRYPTO_DES=y | ||
414 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
415 | -# CONFIG_CRC32 is not set | ||
416 | diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig | ||
417 | index ce30e2f..7d36f6e 100644 | ||
418 | --- a/arch/mips/Kconfig | ||
419 | +++ b/arch/mips/Kconfig | ||
420 | @@ -24,6 +24,7 @@ config MIPS | ||
421 | select HAVE_GENERIC_HARDIRQS | ||
422 | select GENERIC_IRQ_PROBE | ||
423 | select GENERIC_IRQ_SHOW | ||
424 | + select GENERIC_PCI_IOMAP | ||
425 | select HAVE_ARCH_JUMP_LABEL | ||
426 | select IRQ_FORCED_THREADING | ||
427 | select HAVE_MEMBLOCK | ||
428 | @@ -2356,7 +2357,6 @@ config PCI | ||
429 | bool "Support for PCI controller" | ||
430 | depends on HW_HAS_PCI | ||
431 | select PCI_DOMAINS | ||
432 | - select GENERIC_PCI_IOMAP | ||
433 | select NO_GENERIC_PCI_IOPORT_MAP | ||
434 | help | ||
435 | Find out whether you have a PCI motherboard. PCI is the name of a | ||
436 | diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h | ||
437 | index a58f229..f7b3e1c 100644 | ||
438 | --- a/arch/mips/include/asm/io.h | ||
439 | +++ b/arch/mips/include/asm/io.h | ||
440 | @@ -168,6 +168,11 @@ static inline void * isa_bus_to_virt(unsigned long address) | ||
441 | extern void __iomem * __ioremap(phys_t offset, phys_t size, unsigned long flags); | ||
442 | extern void __iounmap(const volatile void __iomem *addr); | ||
443 | |||
444 | +#ifndef CONFIG_PCI | ||
445 | +struct pci_dev; | ||
446 | +static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr) {} | ||
447 | +#endif | ||
448 | + | ||
449 | static inline void __iomem * __ioremap_mode(phys_t offset, unsigned long size, | ||
450 | unsigned long flags) | ||
451 | { | ||
452 | diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h | ||
453 | index da9bd7d..0913b4f 100644 | ||
454 | --- a/arch/mips/include/asm/page.h | ||
455 | +++ b/arch/mips/include/asm/page.h | ||
456 | @@ -175,14 +175,15 @@ typedef struct { unsigned long pgprot; } pgprot_t; | ||
457 | |||
458 | #ifdef CONFIG_FLATMEM | ||
459 | |||
460 | -#define pfn_valid(pfn) \ | ||
461 | -({ \ | ||
462 | - unsigned long __pfn = (pfn); \ | ||
463 | - /* avoid <linux/bootmem.h> include hell */ \ | ||
464 | - extern unsigned long min_low_pfn; \ | ||
465 | - \ | ||
466 | - __pfn >= min_low_pfn && __pfn < max_mapnr; \ | ||
467 | -}) | ||
468 | +#ifndef __ASSEMBLY__ | ||
469 | +static inline int pfn_valid(unsigned long pfn) | ||
470 | +{ | ||
471 | + /* avoid <linux/mm.h> include hell */ | ||
472 | + extern unsigned long max_mapnr; | ||
473 | + | ||
474 | + return pfn >= ARCH_PFN_OFFSET && pfn < max_mapnr; | ||
475 | +} | ||
476 | +#endif | ||
477 | |||
478 | #elif defined(CONFIG_SPARSEMEM) | ||
479 | |||
480 | diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c | ||
481 | index 6130719..4ec32a6 100644 | ||
482 | --- a/arch/powerpc/mm/numa.c | ||
483 | +++ b/arch/powerpc/mm/numa.c | ||
484 | @@ -639,7 +639,7 @@ static void __init parse_drconf_memory(struct device_node *memory) | ||
485 | unsigned int n, rc, ranges, is_kexec_kdump = 0; | ||
486 | unsigned long lmb_size, base, size, sz; | ||
487 | int nid; | ||
488 | - struct assoc_arrays aa; | ||
489 | + struct assoc_arrays aa = { .arrays = NULL }; | ||
490 | |||
491 | n = of_get_drconf_memory(memory, &dm); | ||
492 | if (!n) | ||
493 | diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile | ||
494 | index a3fc437..4961516 100644 | ||
495 | --- a/arch/sparc/lib/Makefile | ||
496 | +++ b/arch/sparc/lib/Makefile | ||
497 | @@ -40,7 +40,7 @@ lib-$(CONFIG_SPARC64) += copy_in_user.o user_fixup.o memmove.o | ||
498 | lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o hweight.o ffs.o | ||
499 | |||
500 | obj-y += iomap.o | ||
501 | -obj-$(CONFIG_SPARC32) += atomic32.o | ||
502 | +obj-$(CONFIG_SPARC32) += atomic32.o ucmpdi2.o | ||
503 | obj-y += ksyms.o | ||
504 | obj-$(CONFIG_SPARC64) += PeeCeeI.o | ||
505 | obj-y += usercopy.o | ||
506 | diff --git a/arch/sparc/lib/ucmpdi2.c b/arch/sparc/lib/ucmpdi2.c | ||
507 | new file mode 100644 | ||
508 | index 0000000..1e06ed5 | ||
509 | --- /dev/null | ||
510 | +++ b/arch/sparc/lib/ucmpdi2.c | ||
511 | @@ -0,0 +1,19 @@ | ||
512 | +#include <linux/module.h> | ||
513 | +#include "libgcc.h" | ||
514 | + | ||
515 | +word_type __ucmpdi2(unsigned long long a, unsigned long long b) | ||
516 | +{ | ||
517 | + const DWunion au = {.ll = a}; | ||
518 | + const DWunion bu = {.ll = b}; | ||
519 | + | ||
520 | + if ((unsigned int) au.s.high < (unsigned int) bu.s.high) | ||
521 | + return 0; | ||
522 | + else if ((unsigned int) au.s.high > (unsigned int) bu.s.high) | ||
523 | + return 2; | ||
524 | + if ((unsigned int) au.s.low < (unsigned int) bu.s.low) | ||
525 | + return 0; | ||
526 | + else if ((unsigned int) au.s.low > (unsigned int) bu.s.low) | ||
527 | + return 2; | ||
528 | + return 1; | ||
529 | +} | ||
530 | +EXPORT_SYMBOL(__ucmpdi2); | ||
531 | diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile | ||
532 | index 2d2728b..491bd9a 100644 | ||
533 | --- a/arch/xtensa/kernel/Makefile | ||
534 | +++ b/arch/xtensa/kernel/Makefile | ||
535 | @@ -24,6 +24,7 @@ obj-$(CONFIG_MODULES) += xtensa_ksyms.o module.o | ||
536 | # Replicate rules in scripts/Makefile.build | ||
537 | |||
538 | sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \ | ||
539 | + -e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \ | ||
540 | -e 's/\*(\(\.text\.[a-z]*\))/*(\1.literal \1)/g' | ||
541 | |||
542 | quiet_cmd__cpp_lds_S = LDS $@ | ||
543 | diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S | ||
544 | index 88ecea3..ee2e208 100644 | ||
545 | --- a/arch/xtensa/kernel/vmlinux.lds.S | ||
546 | +++ b/arch/xtensa/kernel/vmlinux.lds.S | ||
547 | @@ -83,7 +83,6 @@ SECTIONS | ||
548 | |||
549 | _text = .; | ||
550 | _stext = .; | ||
551 | - _ftext = .; | ||
552 | |||
553 | .text : | ||
554 | { | ||
555 | @@ -112,7 +111,7 @@ SECTIONS | ||
556 | EXCEPTION_TABLE(16) | ||
557 | /* Data section */ | ||
558 | |||
559 | - _fdata = .; | ||
560 | + _sdata = .; | ||
561 | RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE) | ||
562 | _edata = .; | ||
563 | |||
564 | diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c | ||
565 | index ba150e5..c82af58 100644 | ||
566 | --- a/arch/xtensa/mm/init.c | ||
567 | +++ b/arch/xtensa/mm/init.c | ||
568 | @@ -29,7 +29,7 @@ | ||
569 | |||
570 | /* References to section boundaries */ | ||
571 | |||
572 | -extern char _ftext, _etext, _fdata, _edata, _rodata_end; | ||
573 | +extern char _stext, _etext, _sdata, _edata, _rodata_end; | ||
574 | extern char __init_begin, __init_end; | ||
575 | |||
576 | /* | ||
577 | @@ -197,8 +197,8 @@ void __init mem_init(void) | ||
578 | reservedpages++; | ||
579 | } | ||
580 | |||
581 | - codesize = (unsigned long) &_etext - (unsigned long) &_ftext; | ||
582 | - datasize = (unsigned long) &_edata - (unsigned long) &_fdata; | ||
583 | + codesize = (unsigned long) &_etext - (unsigned long) &_stext; | ||
584 | + datasize = (unsigned long) &_edata - (unsigned long) &_sdata; | ||
585 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | ||
586 | |||
587 | printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, " | ||
588 | diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c | ||
589 | index ab4d990..dc7c5f6 100644 | ||
590 | --- a/drivers/gpu/drm/i915/intel_lvds.c | ||
591 | +++ b/drivers/gpu/drm/i915/intel_lvds.c | ||
592 | @@ -408,13 +408,7 @@ static void intel_lvds_prepare(struct drm_encoder *encoder) | ||
593 | { | ||
594 | struct intel_lvds *intel_lvds = to_intel_lvds(encoder); | ||
595 | |||
596 | - /* | ||
597 | - * Prior to Ironlake, we must disable the pipe if we want to adjust | ||
598 | - * the panel fitter. However at all other times we can just reset | ||
599 | - * the registers regardless. | ||
600 | - */ | ||
601 | - if (!HAS_PCH_SPLIT(encoder->dev) && intel_lvds->pfit_dirty) | ||
602 | - intel_lvds_disable(intel_lvds); | ||
603 | + intel_lvds_disable(intel_lvds); | ||
604 | } | ||
605 | |||
606 | static void intel_lvds_commit(struct drm_encoder *encoder) | ||
607 | diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c | ||
608 | index 3899989..259b9f4 100644 | ||
609 | --- a/drivers/hid/hid-microsoft.c | ||
610 | +++ b/drivers/hid/hid-microsoft.c | ||
611 | @@ -47,9 +47,9 @@ static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, | ||
612 | rdesc[559] = 0x45; | ||
613 | } | ||
614 | /* the same as above (s/usage/physical/) */ | ||
615 | - if ((quirks & MS_RDESC_3K) && *rsize == 106 && | ||
616 | - !memcmp((char []){ 0x19, 0x00, 0x29, 0xff }, | ||
617 | - &rdesc[94], 4)) { | ||
618 | + if ((quirks & MS_RDESC_3K) && *rsize == 106 && rdesc[94] == 0x19 && | ||
619 | + rdesc[95] == 0x00 && rdesc[96] == 0x29 && | ||
620 | + rdesc[97] == 0xff) { | ||
621 | rdesc[94] = 0x35; | ||
622 | rdesc[96] = 0x45; | ||
623 | } | ||
624 | diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c | ||
625 | index b424a20..ce5f044 100644 | ||
626 | --- a/drivers/md/raid1.c | ||
627 | +++ b/drivers/md/raid1.c | ||
628 | @@ -812,17 +812,17 @@ static void allow_barrier(struct r1conf *conf) | ||
629 | wake_up(&conf->wait_barrier); | ||
630 | } | ||
631 | |||
632 | -static void freeze_array(struct r1conf *conf) | ||
633 | +static void freeze_array(struct r1conf *conf, int extra) | ||
634 | { | ||
635 | /* stop syncio and normal IO and wait for everything to | ||
636 | * go quite. | ||
637 | * We increment barrier and nr_waiting, and then | ||
638 | - * wait until nr_pending match nr_queued+1 | ||
639 | + * wait until nr_pending match nr_queued+extra | ||
640 | * This is called in the context of one normal IO request | ||
641 | * that has failed. Thus any sync request that might be pending | ||
642 | * will be blocked by nr_pending, and we need to wait for | ||
643 | * pending IO requests to complete or be queued for re-try. | ||
644 | - * Thus the number queued (nr_queued) plus this request (1) | ||
645 | + * Thus the number queued (nr_queued) plus this request (extra) | ||
646 | * must match the number of pending IOs (nr_pending) before | ||
647 | * we continue. | ||
648 | */ | ||
649 | @@ -830,7 +830,7 @@ static void freeze_array(struct r1conf *conf) | ||
650 | conf->barrier++; | ||
651 | conf->nr_waiting++; | ||
652 | wait_event_lock_irq(conf->wait_barrier, | ||
653 | - conf->nr_pending == conf->nr_queued+1, | ||
654 | + conf->nr_pending == conf->nr_queued+extra, | ||
655 | conf->resync_lock, | ||
656 | flush_pending_writes(conf)); | ||
657 | spin_unlock_irq(&conf->resync_lock); | ||
658 | @@ -1432,8 +1432,8 @@ static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev) | ||
659 | * we wait for all outstanding requests to complete. | ||
660 | */ | ||
661 | synchronize_sched(); | ||
662 | - raise_barrier(conf); | ||
663 | - lower_barrier(conf); | ||
664 | + freeze_array(conf, 0); | ||
665 | + unfreeze_array(conf); | ||
666 | clear_bit(Unmerged, &rdev->flags); | ||
667 | } | ||
668 | md_integrity_add_rdev(rdev, mddev); | ||
669 | @@ -1481,11 +1481,11 @@ static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) | ||
670 | */ | ||
671 | struct md_rdev *repl = | ||
672 | conf->mirrors[conf->raid_disks + number].rdev; | ||
673 | - raise_barrier(conf); | ||
674 | + freeze_array(conf, 0); | ||
675 | clear_bit(Replacement, &repl->flags); | ||
676 | p->rdev = repl; | ||
677 | conf->mirrors[conf->raid_disks + number].rdev = NULL; | ||
678 | - lower_barrier(conf); | ||
679 | + unfreeze_array(conf); | ||
680 | clear_bit(WantReplacement, &rdev->flags); | ||
681 | } else | ||
682 | clear_bit(WantReplacement, &rdev->flags); | ||
683 | @@ -2100,7 +2100,7 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio) | ||
684 | * frozen | ||
685 | */ | ||
686 | if (mddev->ro == 0) { | ||
687 | - freeze_array(conf); | ||
688 | + freeze_array(conf, 1); | ||
689 | fix_read_error(conf, r1_bio->read_disk, | ||
690 | r1_bio->sector, r1_bio->sectors); | ||
691 | unfreeze_array(conf); | ||
692 | @@ -2855,7 +2855,7 @@ static int raid1_reshape(struct mddev *mddev) | ||
693 | return -ENOMEM; | ||
694 | } | ||
695 | |||
696 | - raise_barrier(conf); | ||
697 | + freeze_array(conf, 0); | ||
698 | |||
699 | /* ok, everything is stopped */ | ||
700 | oldpool = conf->r1bio_pool; | ||
701 | @@ -2887,7 +2887,7 @@ static int raid1_reshape(struct mddev *mddev) | ||
702 | mddev->delta_disks = 0; | ||
703 | |||
704 | conf->last_used = 0; /* just make sure it is in-range */ | ||
705 | - lower_barrier(conf); | ||
706 | + unfreeze_array(conf); | ||
707 | |||
708 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); | ||
709 | md_wakeup_thread(mddev->thread); | ||
710 | diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c | ||
711 | index 54ba531..f7febd8 100644 | ||
712 | --- a/drivers/md/raid10.c | ||
713 | +++ b/drivers/md/raid10.c | ||
714 | @@ -952,17 +952,17 @@ static void allow_barrier(struct r10conf *conf) | ||
715 | wake_up(&conf->wait_barrier); | ||
716 | } | ||
717 | |||
718 | -static void freeze_array(struct r10conf *conf) | ||
719 | +static void freeze_array(struct r10conf *conf, int extra) | ||
720 | { | ||
721 | /* stop syncio and normal IO and wait for everything to | ||
722 | * go quiet. | ||
723 | * We increment barrier and nr_waiting, and then | ||
724 | - * wait until nr_pending match nr_queued+1 | ||
725 | + * wait until nr_pending match nr_queued+extra | ||
726 | * This is called in the context of one normal IO request | ||
727 | * that has failed. Thus any sync request that might be pending | ||
728 | * will be blocked by nr_pending, and we need to wait for | ||
729 | * pending IO requests to complete or be queued for re-try. | ||
730 | - * Thus the number queued (nr_queued) plus this request (1) | ||
731 | + * Thus the number queued (nr_queued) plus this request (extra) | ||
732 | * must match the number of pending IOs (nr_pending) before | ||
733 | * we continue. | ||
734 | */ | ||
735 | @@ -970,7 +970,7 @@ static void freeze_array(struct r10conf *conf) | ||
736 | conf->barrier++; | ||
737 | conf->nr_waiting++; | ||
738 | wait_event_lock_irq(conf->wait_barrier, | ||
739 | - conf->nr_pending == conf->nr_queued+1, | ||
740 | + conf->nr_pending == conf->nr_queued+extra, | ||
741 | conf->resync_lock, | ||
742 | flush_pending_writes(conf)); | ||
743 | |||
744 | @@ -1619,8 +1619,8 @@ static int raid10_add_disk(struct mddev *mddev, struct md_rdev *rdev) | ||
745 | * we wait for all outstanding requests to complete. | ||
746 | */ | ||
747 | synchronize_sched(); | ||
748 | - raise_barrier(conf, 0); | ||
749 | - lower_barrier(conf); | ||
750 | + freeze_array(conf, 0); | ||
751 | + unfreeze_array(conf); | ||
752 | clear_bit(Unmerged, &rdev->flags); | ||
753 | } | ||
754 | md_integrity_add_rdev(rdev, mddev); | ||
755 | @@ -2410,7 +2410,7 @@ static void handle_read_error(struct mddev *mddev, struct r10bio *r10_bio) | ||
756 | r10_bio->devs[slot].bio = NULL; | ||
757 | |||
758 | if (mddev->ro == 0) { | ||
759 | - freeze_array(conf); | ||
760 | + freeze_array(conf, 1); | ||
761 | fix_read_error(conf, mddev, r10_bio); | ||
762 | unfreeze_array(conf); | ||
763 | } else | ||
764 | diff --git a/drivers/net/can/usb/peak_usb/pcan_usb.c b/drivers/net/can/usb/peak_usb/pcan_usb.c | ||
765 | index 25723d8..925ab8e 100644 | ||
766 | --- a/drivers/net/can/usb/peak_usb/pcan_usb.c | ||
767 | +++ b/drivers/net/can/usb/peak_usb/pcan_usb.c | ||
768 | @@ -649,7 +649,7 @@ static int pcan_usb_decode_data(struct pcan_usb_msg_context *mc, u8 status_len) | ||
769 | if ((mc->ptr + rec_len) > mc->end) | ||
770 | goto decode_failed; | ||
771 | |||
772 | - memcpy(cf->data, mc->ptr, rec_len); | ||
773 | + memcpy(cf->data, mc->ptr, cf->can_dlc); | ||
774 | mc->ptr += rec_len; | ||
775 | } | ||
776 | |||
777 | diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c | ||
778 | index 9aa4807..409ed06 100644 | ||
779 | --- a/drivers/net/wireless/iwlegacy/4965-mac.c | ||
780 | +++ b/drivers/net/wireless/iwlegacy/4965-mac.c | ||
781 | @@ -4411,12 +4411,12 @@ il4965_irq_tasklet(struct il_priv *il) | ||
782 | * is killed. Hence update the killswitch state here. The | ||
783 | * rfkill handler will care about restarting if needed. | ||
784 | */ | ||
785 | - if (!test_bit(S_ALIVE, &il->status)) { | ||
786 | - if (hw_rf_kill) | ||
787 | - set_bit(S_RFKILL, &il->status); | ||
788 | - else | ||
789 | - clear_bit(S_RFKILL, &il->status); | ||
790 | + if (hw_rf_kill) { | ||
791 | + set_bit(S_RFKILL, &il->status); | ||
792 | + } else { | ||
793 | + clear_bit(S_RFKILL, &il->status); | ||
794 | wiphy_rfkill_set_hw_state(il->hw->wiphy, hw_rf_kill); | ||
795 | + il_force_reset(il, true); | ||
796 | } | ||
797 | |||
798 | handled |= CSR_INT_BIT_RF_KILL; | ||
799 | @@ -5285,6 +5285,9 @@ il4965_alive_start(struct il_priv *il) | ||
800 | |||
801 | il->active_rate = RATES_MASK; | ||
802 | |||
803 | + il_power_update_mode(il, true); | ||
804 | + D_INFO("Updated power mode\n"); | ||
805 | + | ||
806 | if (il_is_associated(il)) { | ||
807 | struct il_rxon_cmd *active_rxon = | ||
808 | (struct il_rxon_cmd *)&il->active; | ||
809 | @@ -5315,9 +5318,6 @@ il4965_alive_start(struct il_priv *il) | ||
810 | D_INFO("ALIVE processing complete.\n"); | ||
811 | wake_up(&il->wait_command_queue); | ||
812 | |||
813 | - il_power_update_mode(il, true); | ||
814 | - D_INFO("Updated power mode\n"); | ||
815 | - | ||
816 | return; | ||
817 | |||
818 | restart: | ||
819 | diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c | ||
820 | index 2ab6b96..ae4befa 100644 | ||
821 | --- a/drivers/net/wireless/iwlegacy/common.c | ||
822 | +++ b/drivers/net/wireless/iwlegacy/common.c | ||
823 | @@ -4659,6 +4659,7 @@ il_force_reset(struct il_priv *il, bool external) | ||
824 | |||
825 | return 0; | ||
826 | } | ||
827 | +EXPORT_SYMBOL(il_force_reset); | ||
828 | |||
829 | int | ||
830 | il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | ||
831 | diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c | ||
832 | index f88ad63..8659cd9 100644 | ||
833 | --- a/drivers/usb/core/quirks.c | ||
834 | +++ b/drivers/usb/core/quirks.c | ||
835 | @@ -100,6 +100,12 @@ static const struct usb_device_id usb_quirk_list[] = { | ||
836 | { USB_DEVICE(0x04d8, 0x000c), .driver_info = | ||
837 | USB_QUIRK_CONFIG_INTF_STRINGS }, | ||
838 | |||
839 | + /* CarrolTouch 4000U */ | ||
840 | + { USB_DEVICE(0x04e7, 0x0009), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
841 | + | ||
842 | + /* CarrolTouch 4500U */ | ||
843 | + { USB_DEVICE(0x04e7, 0x0030), .driver_info = USB_QUIRK_RESET_RESUME }, | ||
844 | + | ||
845 | /* Samsung Android phone modem - ID conflict with SPH-I500 */ | ||
846 | { USB_DEVICE(0x04e8, 0x6601), .driver_info = | ||
847 | USB_QUIRK_CONFIG_INTF_STRINGS }, | ||
848 | diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c | ||
849 | index 77d974d..cdde45d 100644 | ||
850 | --- a/drivers/usb/serial/mos7720.c | ||
851 | +++ b/drivers/usb/serial/mos7720.c | ||
852 | @@ -97,6 +97,7 @@ struct urbtracker { | ||
853 | struct list_head urblist_entry; | ||
854 | struct kref ref_count; | ||
855 | struct urb *urb; | ||
856 | + struct usb_ctrlrequest *setup; | ||
857 | }; | ||
858 | |||
859 | enum mos7715_pp_modes { | ||
860 | @@ -279,6 +280,7 @@ static void destroy_urbtracker(struct kref *kref) | ||
861 | struct mos7715_parport *mos_parport = urbtrack->mos_parport; | ||
862 | dbg("%s called", __func__); | ||
863 | usb_free_urb(urbtrack->urb); | ||
864 | + kfree(urbtrack->setup); | ||
865 | kfree(urbtrack); | ||
866 | kref_put(&mos_parport->ref_count, destroy_mos_parport); | ||
867 | } | ||
868 | @@ -363,7 +365,6 @@ static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport, | ||
869 | struct urbtracker *urbtrack; | ||
870 | int ret_val; | ||
871 | unsigned long flags; | ||
872 | - struct usb_ctrlrequest setup; | ||
873 | struct usb_serial *serial = mos_parport->serial; | ||
874 | struct usb_device *usbdev = serial->dev; | ||
875 | dbg("%s called", __func__); | ||
876 | @@ -382,14 +383,20 @@ static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport, | ||
877 | kfree(urbtrack); | ||
878 | return -ENOMEM; | ||
879 | } | ||
880 | - setup.bRequestType = (__u8)0x40; | ||
881 | - setup.bRequest = (__u8)0x0e; | ||
882 | - setup.wValue = get_reg_value(reg, dummy); | ||
883 | - setup.wIndex = get_reg_index(reg); | ||
884 | - setup.wLength = 0; | ||
885 | + urbtrack->setup = kmalloc(sizeof(*urbtrack->setup), GFP_KERNEL); | ||
886 | + if (!urbtrack->setup) { | ||
887 | + usb_free_urb(urbtrack->urb); | ||
888 | + kfree(urbtrack); | ||
889 | + return -ENOMEM; | ||
890 | + } | ||
891 | + urbtrack->setup->bRequestType = (__u8)0x40; | ||
892 | + urbtrack->setup->bRequest = (__u8)0x0e; | ||
893 | + urbtrack->setup->wValue = get_reg_value(reg, dummy); | ||
894 | + urbtrack->setup->wIndex = get_reg_index(reg); | ||
895 | + urbtrack->setup->wLength = 0; | ||
896 | usb_fill_control_urb(urbtrack->urb, usbdev, | ||
897 | usb_sndctrlpipe(usbdev, 0), | ||
898 | - (unsigned char *)&setup, | ||
899 | + (unsigned char *)urbtrack->setup, | ||
900 | NULL, 0, async_complete, urbtrack); | ||
901 | kref_init(&urbtrack->ref_count); | ||
902 | INIT_LIST_HEAD(&urbtrack->urblist_entry); | ||
903 | diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c | ||
904 | index aca1790..d0b8f98 100644 | ||
905 | --- a/fs/ext4/ext4_jbd2.c | ||
906 | +++ b/fs/ext4/ext4_jbd2.c | ||
907 | @@ -109,10 +109,10 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line, | ||
908 | |||
909 | if (ext4_handle_valid(handle)) { | ||
910 | err = jbd2_journal_dirty_metadata(handle, bh); | ||
911 | - if (err) { | ||
912 | - /* Errors can only happen if there is a bug */ | ||
913 | - handle->h_err = err; | ||
914 | - __ext4_journal_stop(where, line, handle); | ||
915 | + /* Errors can only happen if there is a bug */ | ||
916 | + if (WARN_ON_ONCE(err)) { | ||
917 | + ext4_journal_abort_handle(where, line, __func__, bh, | ||
918 | + handle, err); | ||
919 | } | ||
920 | } else { | ||
921 | if (inode) | ||
922 | diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c | ||
923 | index 7faaf2a..8df7fd2 100644 | ||
924 | --- a/fs/proc/task_mmu.c | ||
925 | +++ b/fs/proc/task_mmu.c | ||
926 | @@ -679,14 +679,14 @@ typedef struct { | ||
927 | } pagemap_entry_t; | ||
928 | |||
929 | struct pagemapread { | ||
930 | - int pos, len; | ||
931 | + int pos, len; /* units: PM_ENTRY_BYTES, not bytes */ | ||
932 | pagemap_entry_t *buffer; | ||
933 | }; | ||
934 | |||
935 | #define PAGEMAP_WALK_SIZE (PMD_SIZE) | ||
936 | #define PAGEMAP_WALK_MASK (PMD_MASK) | ||
937 | |||
938 | -#define PM_ENTRY_BYTES sizeof(u64) | ||
939 | +#define PM_ENTRY_BYTES sizeof(pagemap_entry_t) | ||
940 | #define PM_STATUS_BITS 3 | ||
941 | #define PM_STATUS_OFFSET (64 - PM_STATUS_BITS) | ||
942 | #define PM_STATUS_MASK (((1LL << PM_STATUS_BITS) - 1) << PM_STATUS_OFFSET) | ||
943 | @@ -913,8 +913,8 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | ||
944 | if (!count) | ||
945 | goto out_task; | ||
946 | |||
947 | - pm.len = PM_ENTRY_BYTES * (PAGEMAP_WALK_SIZE >> PAGE_SHIFT); | ||
948 | - pm.buffer = kmalloc(pm.len, GFP_TEMPORARY); | ||
949 | + pm.len = (PAGEMAP_WALK_SIZE >> PAGE_SHIFT); | ||
950 | + pm.buffer = kmalloc(pm.len * PM_ENTRY_BYTES, GFP_TEMPORARY); | ||
951 | ret = -ENOMEM; | ||
952 | if (!pm.buffer) | ||
953 | goto out_task; | ||
954 | diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h | ||
955 | index 2c36a71..6baa73d 100644 | ||
956 | --- a/include/linux/hugetlb.h | ||
957 | +++ b/include/linux/hugetlb.h | ||
958 | @@ -293,6 +293,17 @@ static inline unsigned hstate_index_to_shift(unsigned index) | ||
959 | return hstates[index].order + PAGE_SHIFT; | ||
960 | } | ||
961 | |||
962 | +pgoff_t __basepage_index(struct page *page); | ||
963 | + | ||
964 | +/* Return page->index in PAGE_SIZE units */ | ||
965 | +static inline pgoff_t basepage_index(struct page *page) | ||
966 | +{ | ||
967 | + if (!PageCompound(page)) | ||
968 | + return page->index; | ||
969 | + | ||
970 | + return __basepage_index(page); | ||
971 | +} | ||
972 | + | ||
973 | #else /* CONFIG_HUGETLB_PAGE */ | ||
974 | struct hstate {}; | ||
975 | #define alloc_huge_page_node(h, nid) NULL | ||
976 | @@ -311,6 +322,11 @@ static inline unsigned int pages_per_huge_page(struct hstate *h) | ||
977 | return 1; | ||
978 | } | ||
979 | #define hstate_index_to_shift(index) 0 | ||
980 | + | ||
981 | +static inline pgoff_t basepage_index(struct page *page) | ||
982 | +{ | ||
983 | + return page->index; | ||
984 | +} | ||
985 | #endif | ||
986 | |||
987 | #endif /* _LINUX_HUGETLB_H */ | ||
988 | diff --git a/kernel/futex.c b/kernel/futex.c | ||
989 | index 8879430..f0ee318 100644 | ||
990 | --- a/kernel/futex.c | ||
991 | +++ b/kernel/futex.c | ||
992 | @@ -60,6 +60,7 @@ | ||
993 | #include <linux/pid.h> | ||
994 | #include <linux/nsproxy.h> | ||
995 | #include <linux/ptrace.h> | ||
996 | +#include <linux/hugetlb.h> | ||
997 | |||
998 | #include <asm/futex.h> | ||
999 | |||
1000 | @@ -363,7 +364,7 @@ again: | ||
1001 | } else { | ||
1002 | key->both.offset |= FUT_OFF_INODE; /* inode-based key */ | ||
1003 | key->shared.inode = page_head->mapping->host; | ||
1004 | - key->shared.pgoff = page_head->index; | ||
1005 | + key->shared.pgoff = basepage_index(page); | ||
1006 | } | ||
1007 | |||
1008 | get_futex_key_refs(key); | ||
1009 | diff --git a/mm/hugetlb.c b/mm/hugetlb.c | ||
1010 | index a692439..af20b77 100644 | ||
1011 | --- a/mm/hugetlb.c | ||
1012 | +++ b/mm/hugetlb.c | ||
1013 | @@ -679,6 +679,23 @@ int PageHuge(struct page *page) | ||
1014 | } | ||
1015 | EXPORT_SYMBOL_GPL(PageHuge); | ||
1016 | |||
1017 | +pgoff_t __basepage_index(struct page *page) | ||
1018 | +{ | ||
1019 | + struct page *page_head = compound_head(page); | ||
1020 | + pgoff_t index = page_index(page_head); | ||
1021 | + unsigned long compound_idx; | ||
1022 | + | ||
1023 | + if (!PageHuge(page_head)) | ||
1024 | + return page_index(page); | ||
1025 | + | ||
1026 | + if (compound_order(page_head) >= MAX_ORDER) | ||
1027 | + compound_idx = page_to_pfn(page) - page_to_pfn(page_head); | ||
1028 | + else | ||
1029 | + compound_idx = page - page_head; | ||
1030 | + | ||
1031 | + return (index << compound_order(page_head)) + compound_idx; | ||
1032 | +} | ||
1033 | + | ||
1034 | static struct page *alloc_fresh_huge_page_node(struct hstate *h, int nid) | ||
1035 | { | ||
1036 | struct page *page; | ||
1037 | diff --git a/mm/nommu.c b/mm/nommu.c | ||
1038 | index b0956e3..d3afb47 100644 | ||
1039 | --- a/mm/nommu.c | ||
1040 | +++ b/mm/nommu.c | ||
1041 | @@ -1856,6 +1856,16 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, | ||
1042 | } | ||
1043 | EXPORT_SYMBOL(remap_pfn_range); | ||
1044 | |||
1045 | +int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len) | ||
1046 | +{ | ||
1047 | + unsigned long pfn = start >> PAGE_SHIFT; | ||
1048 | + unsigned long vm_len = vma->vm_end - vma->vm_start; | ||
1049 | + | ||
1050 | + pfn += vma->vm_pgoff; | ||
1051 | + return io_remap_pfn_range(vma, vma->vm_start, pfn, vm_len, vma->vm_page_prot); | ||
1052 | +} | ||
1053 | +EXPORT_SYMBOL(vm_iomap_memory); | ||
1054 | + | ||
1055 | int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, | ||
1056 | unsigned long pgoff) | ||
1057 | { | ||
1058 | diff --git a/net/key/af_key.c b/net/key/af_key.c | ||
1059 | index 60109f4..2f3ce93 100644 | ||
1060 | --- a/net/key/af_key.c | ||
1061 | +++ b/net/key/af_key.c | ||
1062 | @@ -2687,6 +2687,7 @@ static int key_notify_policy_flush(const struct km_event *c) | ||
1063 | hdr->sadb_msg_pid = c->pid; | ||
1064 | hdr->sadb_msg_version = PF_KEY_V2; | ||
1065 | hdr->sadb_msg_errno = (uint8_t) 0; | ||
1066 | + hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC; | ||
1067 | hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); | ||
1068 | hdr->sadb_msg_reserved = 0; | ||
1069 | pfkey_broadcast(skb_out, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net); | ||
1070 | diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig | ||
1071 | index 5849b12..1a96402 100644 | ||
1072 | --- a/sound/oss/Kconfig | ||
1073 | +++ b/sound/oss/Kconfig | ||
1074 | @@ -250,6 +250,7 @@ config MSND_FIFOSIZE | ||
1075 | menuconfig SOUND_OSS | ||
1076 | tristate "OSS sound modules" | ||
1077 | depends on ISA_DMA_API && VIRT_TO_BUS | ||
1078 | + depends on !GENERIC_ISA_DMA_SUPPORT_BROKEN | ||
1079 | help | ||
1080 | OSS is the Open Sound System suite of sound card drivers. They make | ||
1081 | sound programming easier since they provide a common API. Say Y or |