Magellan Linux

Annotation of /trunk/kernel-lts/patches-3.4/0158-3.4.59-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2275 - (hide annotations) (download)
Mon Sep 2 08:09:55 2013 UTC (10 years, 8 months 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