diff options
55 files changed, 352 insertions, 149 deletions
| @@ -1,7 +1,7 @@ | |||
| 1 | VERSION = 2 | 1 | VERSION = 2 |
| 2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
| 3 | SUBLEVEL = 18 | 3 | SUBLEVEL = 18 |
| 4 | EXTRAVERSION = -rc6 | 4 | EXTRAVERSION = -rc7 |
| 5 | NAME=Crazed Snow-Weasel | 5 | NAME=Crazed Snow-Weasel |
| 6 | 6 | ||
| 7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index ab98fc21a541..5427a842e841 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
| @@ -39,7 +39,6 @@ obj-$(CONFIG_VM86) += vm86.o | |||
| 39 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 39 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
| 40 | obj-$(CONFIG_HPET_TIMER) += hpet.o | 40 | obj-$(CONFIG_HPET_TIMER) += hpet.o |
| 41 | obj-$(CONFIG_K8_NB) += k8.o | 41 | obj-$(CONFIG_K8_NB) += k8.o |
| 42 | obj-$(CONFIG_AUDIT) += audit.o | ||
| 43 | 42 | ||
| 44 | EXTRA_AFLAGS := -traditional | 43 | EXTRA_AFLAGS := -traditional |
| 45 | 44 | ||
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 674de8943478..db274da7dba1 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
| @@ -75,6 +75,10 @@ config DMA_IS_NORMAL | |||
| 75 | depends on IA64_SGI_SN2 | 75 | depends on IA64_SGI_SN2 |
| 76 | default y | 76 | default y |
| 77 | 77 | ||
| 78 | config AUDIT_ARCH | ||
| 79 | bool | ||
| 80 | default y | ||
| 81 | |||
| 78 | choice | 82 | choice |
| 79 | prompt "System type" | 83 | prompt "System type" |
| 80 | default IA64_GENERIC | 84 | default IA64_GENERIC |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 4d4b6fb156e1..694b0c63ee50 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
| @@ -95,6 +95,10 @@ config GENERIC_TBSYNC | |||
| 95 | default y if PPC32 && SMP | 95 | default y if PPC32 && SMP |
| 96 | default n | 96 | default n |
| 97 | 97 | ||
| 98 | config AUDIT_ARCH | ||
| 99 | bool | ||
| 100 | default y | ||
| 101 | |||
| 98 | config DEFAULT_UIMAGE | 102 | config DEFAULT_UIMAGE |
| 99 | bool | 103 | bool |
| 100 | help | 104 | help |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index ae071a11ce71..2f4f70c4dbb2 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
| @@ -118,6 +118,10 @@ config SYSVIPC_COMPAT | |||
| 118 | depends on COMPAT && SYSVIPC | 118 | depends on COMPAT && SYSVIPC |
| 119 | default y | 119 | default y |
| 120 | 120 | ||
| 121 | config AUDIT_ARCH | ||
| 122 | bool | ||
| 123 | default y | ||
| 124 | |||
| 121 | comment "Code generation options" | 125 | comment "Code generation options" |
| 122 | 126 | ||
| 123 | choice | 127 | choice |
diff --git a/arch/sh64/Makefile b/arch/sh64/Makefile index 8ca57ffa2b70..ebf20043991c 100644 --- a/arch/sh64/Makefile +++ b/arch/sh64/Makefile | |||
| @@ -26,7 +26,6 @@ LDFLAGS += -EB -mshelf32_linux | |||
| 26 | endif | 26 | endif |
| 27 | 27 | ||
| 28 | # No requirements for endianess support from AFLAGS, 'as' always run through gcc | 28 | # No requirements for endianess support from AFLAGS, 'as' always run through gcc |
| 29 | AFLAGS += -m5 -isa=sh64 -traditional | ||
| 30 | CFLAGS += $(cpu-y) | 29 | CFLAGS += $(cpu-y) |
| 31 | 30 | ||
| 32 | LDFLAGS_vmlinux += --defsym phys_stext=_stext-$(CONFIG_CACHED_MEMORY_OFFSET) \ | 31 | LDFLAGS_vmlinux += --defsym phys_stext=_stext-$(CONFIG_CACHED_MEMORY_OFFSET) \ |
diff --git a/arch/sh64/kernel/process.c b/arch/sh64/kernel/process.c index dba8e14013b6..db475b7833fb 100644 --- a/arch/sh64/kernel/process.c +++ b/arch/sh64/kernel/process.c | |||
| @@ -355,6 +355,9 @@ void machine_power_off(void) | |||
| 355 | enter_deep_standby(); | 355 | enter_deep_standby(); |
| 356 | } | 356 | } |
| 357 | 357 | ||
| 358 | void (*pm_power_off)(void) = machine_power_off; | ||
| 359 | EXPORT_SYMBOL(pm_power_off); | ||
| 360 | |||
| 358 | void show_regs(struct pt_regs * regs) | 361 | void show_regs(struct pt_regs * regs) |
| 359 | { | 362 | { |
| 360 | unsigned long long ah, al, bh, bl, ch, cl; | 363 | unsigned long long ah, al, bh, bl, ch, cl; |
diff --git a/arch/sh64/mach-cayman/setup.c b/arch/sh64/mach-cayman/setup.c index d84895dda3cd..3ed87cd059d0 100644 --- a/arch/sh64/mach-cayman/setup.c +++ b/arch/sh64/mach-cayman/setup.c | |||
| @@ -112,8 +112,10 @@ struct resource io_resources[] = { | |||
| 112 | }; | 112 | }; |
| 113 | 113 | ||
| 114 | struct resource kram_resources[] = { | 114 | struct resource kram_resources[] = { |
| 115 | { "Kernel code", 0, 0 }, /* These must be last in the array */ | 115 | /* These must be last in the array */ |
| 116 | { "Kernel data", 0, 0 } /* These must be last in the array */ | 116 | { .name = "Kernel code", .start = 0, .end = 0 }, |
| 117 | /* These must be last in the array */ | ||
| 118 | { .name = "Kernel data", .start = 0, .end = 0 } | ||
| 117 | }; | 119 | }; |
| 118 | 120 | ||
| 119 | struct resource xram_resources[] = { | 121 | struct resource xram_resources[] = { |
diff --git a/arch/sh64/mm/ioremap.c b/arch/sh64/mm/ioremap.c index fb1866fa2c9d..80c56754f513 100644 --- a/arch/sh64/mm/ioremap.c +++ b/arch/sh64/mm/ioremap.c | |||
| @@ -449,7 +449,9 @@ ioremap_proc_info(char *buf, char **start, off_t fpos, int length, int *eof, | |||
| 449 | if (p + 32 >= e) /* Better than nothing */ | 449 | if (p + 32 >= e) /* Better than nothing */ |
| 450 | break; | 450 | break; |
| 451 | if ((nm = r->name) == 0) nm = "???"; | 451 | if ((nm = r->name) == 0) nm = "???"; |
| 452 | p += sprintf(p, "%08lx-%08lx: %s\n", r->start, r->end, nm); | 452 | p += sprintf(p, "%08lx-%08lx: %s\n", |
| 453 | (unsigned long)r->start, | ||
| 454 | (unsigned long)r->end, nm); | ||
| 453 | } | 455 | } |
| 454 | 456 | ||
| 455 | return p-buf; | 457 | return p-buf; |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 8a36ba8868db..8d8ca716f7a7 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
| @@ -34,6 +34,10 @@ config ARCH_MAY_HAVE_PC_FDC | |||
| 34 | bool | 34 | bool |
| 35 | default y | 35 | default y |
| 36 | 36 | ||
| 37 | config AUDIT_ARCH | ||
| 38 | bool | ||
| 39 | default y | ||
| 40 | |||
| 37 | choice | 41 | choice |
| 38 | prompt "Kernel page size" | 42 | prompt "Kernel page size" |
| 39 | default SPARC64_PAGE_SIZE_8KB | 43 | default SPARC64_PAGE_SIZE_8KB |
diff --git a/arch/sparc64/kernel/Makefile b/arch/sparc64/kernel/Makefile index 86c9fe3f3e4a..e1eabebaed39 100644 --- a/arch/sparc64/kernel/Makefile +++ b/arch/sparc64/kernel/Makefile | |||
| @@ -25,6 +25,9 @@ obj-$(CONFIG_MODULES) += module.o | |||
| 25 | obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o | 25 | obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o |
| 26 | obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o | 26 | obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o |
| 27 | obj-$(CONFIG_KPROBES) += kprobes.o | 27 | obj-$(CONFIG_KPROBES) += kprobes.o |
| 28 | obj-$(CONFIG_AUDIT) += audit.o | ||
| 29 | obj-$(CONFIG_AUDIT)$(CONFIG_SPARC32_COMPAT) += compat_audit.o | ||
| 30 | obj-y += $(obj-yy) | ||
| 28 | 31 | ||
| 29 | ifdef CONFIG_SUNOS_EMUL | 32 | ifdef CONFIG_SUNOS_EMUL |
| 30 | obj-y += sys_sunos32.o sunos_ioctl32.o | 33 | obj-y += sys_sunos32.o sunos_ioctl32.o |
diff --git a/arch/sparc64/kernel/audit.c b/arch/sparc64/kernel/audit.c new file mode 100644 index 000000000000..aef19cc27072 --- /dev/null +++ b/arch/sparc64/kernel/audit.c | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | #include <linux/init.h> | ||
| 2 | #include <linux/types.h> | ||
| 3 | #include <linux/audit.h> | ||
| 4 | #include <asm/unistd.h> | ||
| 5 | |||
| 6 | static unsigned dir_class[] = { | ||
| 7 | #include <asm-generic/audit_dir_write.h> | ||
| 8 | ~0U | ||
| 9 | }; | ||
| 10 | |||
| 11 | static unsigned read_class[] = { | ||
| 12 | #include <asm-generic/audit_read.h> | ||
| 13 | ~0U | ||
| 14 | }; | ||
| 15 | |||
| 16 | static unsigned write_class[] = { | ||
| 17 | #include <asm-generic/audit_write.h> | ||
| 18 | ~0U | ||
| 19 | }; | ||
| 20 | |||
| 21 | static unsigned chattr_class[] = { | ||
| 22 | #include <asm-generic/audit_change_attr.h> | ||
| 23 | ~0U | ||
| 24 | }; | ||
| 25 | |||
| 26 | int audit_classify_syscall(int abi, unsigned syscall) | ||
| 27 | { | ||
| 28 | #ifdef CONFIG_SPARC32_COMPAT | ||
| 29 | extern int sparc32_classify_syscall(unsigned); | ||
| 30 | if (abi == AUDIT_ARCH_SPARC) | ||
| 31 | return sparc32_classify_syscall(syscall); | ||
| 32 | #endif | ||
| 33 | switch(syscall) { | ||
| 34 | case __NR_open: | ||
| 35 | return 2; | ||
| 36 | case __NR_openat: | ||
| 37 | return 3; | ||
| 38 | case __NR_socketcall: | ||
| 39 | return 4; | ||
| 40 | case __NR_execve: | ||
| 41 | return 5; | ||
| 42 | default: | ||
| 43 | return 0; | ||
| 44 | } | ||
| 45 | } | ||
| 46 | |||
| 47 | static int __init audit_classes_init(void) | ||
| 48 | { | ||
| 49 | #ifdef CONFIG_SPARC32_COMPAT | ||
| 50 | extern __u32 sparc32_dir_class[]; | ||
| 51 | extern __u32 sparc32_write_class[]; | ||
| 52 | extern __u32 sparc32_read_class[]; | ||
| 53 | extern __u32 sparc32_chattr_class[]; | ||
| 54 | audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); | ||
| 55 | audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); | ||
| 56 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); | ||
| 57 | audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); | ||
| 58 | #endif | ||
| 59 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
| 60 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
| 61 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | ||
| 62 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | ||
| 63 | return 0; | ||
| 64 | } | ||
| 65 | |||
| 66 | __initcall(audit_classes_init); | ||
diff --git a/arch/sparc64/kernel/compat_audit.c b/arch/sparc64/kernel/compat_audit.c new file mode 100644 index 000000000000..cca96c91b780 --- /dev/null +++ b/arch/sparc64/kernel/compat_audit.c | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | #include <asm-sparc/unistd.h> | ||
| 2 | |||
| 3 | unsigned sparc32_dir_class[] = { | ||
| 4 | #include <asm-generic/audit_dir_write.h> | ||
| 5 | ~0U | ||
| 6 | }; | ||
| 7 | |||
| 8 | unsigned sparc32_chattr_class[] = { | ||
| 9 | #include <asm-generic/audit_change_attr.h> | ||
| 10 | ~0U | ||
| 11 | }; | ||
| 12 | |||
| 13 | unsigned sparc32_write_class[] = { | ||
| 14 | #include <asm-generic/audit_write.h> | ||
| 15 | ~0U | ||
| 16 | }; | ||
| 17 | |||
| 18 | unsigned sparc32_read_class[] = { | ||
| 19 | #include <asm-generic/audit_read.h> | ||
| 20 | ~0U | ||
| 21 | }; | ||
| 22 | |||
| 23 | int sparc32_classify_syscall(unsigned syscall) | ||
| 24 | { | ||
| 25 | switch(syscall) { | ||
| 26 | case __NR_open: | ||
| 27 | return 2; | ||
| 28 | case __NR_openat: | ||
| 29 | return 3; | ||
| 30 | case __NR_socketcall: | ||
| 31 | return 4; | ||
| 32 | case __NR_execve: | ||
| 33 | return 5; | ||
| 34 | default: | ||
| 35 | return 1; | ||
| 36 | } | ||
| 37 | } | ||
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index 28df7d88ce2c..6cd4878625f1 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig | |||
| @@ -85,6 +85,10 @@ config DMI | |||
| 85 | bool | 85 | bool |
| 86 | default y | 86 | default y |
| 87 | 87 | ||
| 88 | config AUDIT_ARCH | ||
| 89 | bool | ||
| 90 | default y | ||
| 91 | |||
| 88 | source "init/Kconfig" | 92 | source "init/Kconfig" |
| 89 | 93 | ||
| 90 | 94 | ||
diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig index ef52e6da01ed..ed4aa4e7912c 100644 --- a/drivers/media/Kconfig +++ b/drivers/media/Kconfig | |||
| @@ -53,7 +53,7 @@ config VIDEO_V4L1_COMPAT | |||
| 53 | If you are unsure as to whether this is required, answer Y. | 53 | If you are unsure as to whether this is required, answer Y. |
| 54 | 54 | ||
| 55 | config VIDEO_V4L2 | 55 | config VIDEO_V4L2 |
| 56 | tristate | 56 | bool |
| 57 | default y | 57 | default y |
| 58 | 58 | ||
| 59 | source "drivers/media/video/Kconfig" | 59 | source "drivers/media/video/Kconfig" |
diff --git a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c index 8393d472d3b8..7e0cedc557df 100644 --- a/drivers/media/common/saa7146_video.c +++ b/drivers/media/common/saa7146_video.c | |||
| @@ -1190,6 +1190,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int | |||
| 1190 | } | 1190 | } |
| 1191 | return err; | 1191 | return err; |
| 1192 | } | 1192 | } |
| 1193 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
| 1193 | case VIDIOCGMBUF: | 1194 | case VIDIOCGMBUF: |
| 1194 | { | 1195 | { |
| 1195 | struct video_mbuf *mbuf = arg; | 1196 | struct video_mbuf *mbuf = arg; |
| @@ -1218,6 +1219,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int | |||
| 1218 | mutex_unlock(&q->lock); | 1219 | mutex_unlock(&q->lock); |
| 1219 | return 0; | 1220 | return 0; |
| 1220 | } | 1221 | } |
| 1222 | #endif | ||
| 1221 | default: | 1223 | default: |
| 1222 | return v4l_compat_translate_ioctl(inode,file,cmd,arg, | 1224 | return v4l_compat_translate_ioctl(inode,file,cmd,arg, |
| 1223 | saa7146_video_do_ioctl); | 1225 | saa7146_video_do_ioctl); |
diff --git a/drivers/media/dvb/b2c2/Kconfig b/drivers/media/dvb/b2c2/Kconfig index d7f1fd5b7b02..49a06fc54c51 100644 --- a/drivers/media/dvb/b2c2/Kconfig +++ b/drivers/media/dvb/b2c2/Kconfig | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | config DVB_B2C2_FLEXCOP | 1 | config DVB_B2C2_FLEXCOP |
| 2 | tristate "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters" | 2 | tristate "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters" |
| 3 | depends on DVB_CORE && I2C | 3 | depends on DVB_CORE && I2C |
| 4 | select DVB_PLL | ||
| 4 | select DVB_STV0299 | 5 | select DVB_STV0299 |
| 5 | select DVB_MT352 | 6 | select DVB_MT352 |
| 6 | select DVB_MT312 | 7 | select DVB_MT312 |
diff --git a/drivers/media/dvb/bt8xx/Kconfig b/drivers/media/dvb/bt8xx/Kconfig index f394002118f8..7d0ee1ab2903 100644 --- a/drivers/media/dvb/bt8xx/Kconfig +++ b/drivers/media/dvb/bt8xx/Kconfig | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | config DVB_BT8XX | 1 | config DVB_BT8XX |
| 2 | tristate "BT8xx based PCI cards" | 2 | tristate "BT8xx based PCI cards" |
| 3 | depends on DVB_CORE && PCI && I2C && VIDEO_BT848 | 3 | depends on DVB_CORE && PCI && I2C && VIDEO_BT848 |
| 4 | select DVB_PLL | ||
| 4 | select DVB_MT352 | 5 | select DVB_MT352 |
| 5 | select DVB_SP887X | 6 | select DVB_SP887X |
| 6 | select DVB_NXT6000 | 7 | select DVB_NXT6000 |
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig index 3bc6722a6443..75824b77198a 100644 --- a/drivers/media/dvb/dvb-usb/Kconfig +++ b/drivers/media/dvb/dvb-usb/Kconfig | |||
| @@ -2,6 +2,7 @@ config DVB_USB | |||
| 2 | tristate "Support for various USB DVB devices" | 2 | tristate "Support for various USB DVB devices" |
| 3 | depends on DVB_CORE && USB && I2C | 3 | depends on DVB_CORE && USB && I2C |
| 4 | select FW_LOADER | 4 | select FW_LOADER |
| 5 | select DVB_PLL | ||
| 5 | help | 6 | help |
| 6 | By enabling this you will be able to choose the various supported | 7 | By enabling this you will be able to choose the various supported |
| 7 | USB1.1 and USB2.0 DVB devices. | 8 | USB1.1 and USB2.0 DVB devices. |
diff --git a/drivers/media/dvb/frontends/Kconfig b/drivers/media/dvb/frontends/Kconfig index 0ef361f0309b..db978555b1eb 100644 --- a/drivers/media/dvb/frontends/Kconfig +++ b/drivers/media/dvb/frontends/Kconfig | |||
| @@ -6,43 +6,43 @@ comment "DVB-S (satellite) frontends" | |||
| 6 | 6 | ||
| 7 | config DVB_STV0299 | 7 | config DVB_STV0299 |
| 8 | tristate "ST STV0299 based" | 8 | tristate "ST STV0299 based" |
| 9 | depends on DVB_CORE | 9 | depends on DVB_CORE && I2C |
| 10 | help | 10 | help |
| 11 | A DVB-S tuner module. Say Y when you want to support this frontend. | 11 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 12 | 12 | ||
| 13 | config DVB_CX24110 | 13 | config DVB_CX24110 |
| 14 | tristate "Conexant CX24110 based" | 14 | tristate "Conexant CX24110 based" |
| 15 | depends on DVB_CORE | 15 | depends on DVB_CORE && I2C |
| 16 | help | 16 | help |
| 17 | A DVB-S tuner module. Say Y when you want to support this frontend. | 17 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 18 | 18 | ||
| 19 | config DVB_CX24123 | 19 | config DVB_CX24123 |
| 20 | tristate "Conexant CX24123 based" | 20 | tristate "Conexant CX24123 based" |
| 21 | depends on DVB_CORE | 21 | depends on DVB_CORE && I2C |
| 22 | help | 22 | help |
| 23 | A DVB-S tuner module. Say Y when you want to support this frontend. | 23 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 24 | 24 | ||
| 25 | config DVB_TDA8083 | 25 | config DVB_TDA8083 |
| 26 | tristate "Philips TDA8083 based" | 26 | tristate "Philips TDA8083 based" |
| 27 | depends on DVB_CORE | 27 | depends on DVB_CORE && I2C |
| 28 | help | 28 | help |
| 29 | A DVB-S tuner module. Say Y when you want to support this frontend. | 29 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 30 | 30 | ||
| 31 | config DVB_MT312 | 31 | config DVB_MT312 |
| 32 | tristate "Zarlink VP310/MT312 based" | 32 | tristate "Zarlink VP310/MT312 based" |
| 33 | depends on DVB_CORE | 33 | depends on DVB_CORE && I2C |
| 34 | help | 34 | help |
| 35 | A DVB-S tuner module. Say Y when you want to support this frontend. | 35 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 36 | 36 | ||
| 37 | config DVB_VES1X93 | 37 | config DVB_VES1X93 |
| 38 | tristate "VLSI VES1893 or VES1993 based" | 38 | tristate "VLSI VES1893 or VES1993 based" |
| 39 | depends on DVB_CORE | 39 | depends on DVB_CORE && I2C |
| 40 | help | 40 | help |
| 41 | A DVB-S tuner module. Say Y when you want to support this frontend. | 41 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 42 | 42 | ||
| 43 | config DVB_S5H1420 | 43 | config DVB_S5H1420 |
| 44 | tristate "Samsung S5H1420 based" | 44 | tristate "Samsung S5H1420 based" |
| 45 | depends on DVB_CORE | 45 | depends on DVB_CORE && I2C |
| 46 | help | 46 | help |
| 47 | A DVB-S tuner module. Say Y when you want to support this frontend. | 47 | A DVB-S tuner module. Say Y when you want to support this frontend. |
| 48 | 48 | ||
| @@ -51,7 +51,7 @@ comment "DVB-T (terrestrial) frontends" | |||
| 51 | 51 | ||
| 52 | config DVB_SP8870 | 52 | config DVB_SP8870 |
| 53 | tristate "Spase sp8870 based" | 53 | tristate "Spase sp8870 based" |
| 54 | depends on DVB_CORE | 54 | depends on DVB_CORE && I2C |
| 55 | select FW_LOADER | 55 | select FW_LOADER |
| 56 | help | 56 | help |
| 57 | A DVB-T tuner module. Say Y when you want to support this frontend. | 57 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| @@ -63,7 +63,7 @@ config DVB_SP8870 | |||
| 63 | 63 | ||
| 64 | config DVB_SP887X | 64 | config DVB_SP887X |
| 65 | tristate "Spase sp887x based" | 65 | tristate "Spase sp887x based" |
| 66 | depends on DVB_CORE | 66 | depends on DVB_CORE && I2C |
| 67 | select FW_LOADER | 67 | select FW_LOADER |
| 68 | help | 68 | help |
| 69 | A DVB-T tuner module. Say Y when you want to support this frontend. | 69 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| @@ -75,25 +75,25 @@ config DVB_SP887X | |||
| 75 | 75 | ||
| 76 | config DVB_CX22700 | 76 | config DVB_CX22700 |
| 77 | tristate "Conexant CX22700 based" | 77 | tristate "Conexant CX22700 based" |
| 78 | depends on DVB_CORE | 78 | depends on DVB_CORE && I2C |
| 79 | help | 79 | help |
| 80 | A DVB-T tuner module. Say Y when you want to support this frontend. | 80 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| 81 | 81 | ||
| 82 | config DVB_CX22702 | 82 | config DVB_CX22702 |
| 83 | tristate "Conexant cx22702 demodulator (OFDM)" | 83 | tristate "Conexant cx22702 demodulator (OFDM)" |
| 84 | depends on DVB_CORE | 84 | depends on DVB_CORE && I2C |
| 85 | help | 85 | help |
| 86 | A DVB-T tuner module. Say Y when you want to support this frontend. | 86 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| 87 | 87 | ||
| 88 | config DVB_L64781 | 88 | config DVB_L64781 |
| 89 | tristate "LSI L64781" | 89 | tristate "LSI L64781" |
| 90 | depends on DVB_CORE | 90 | depends on DVB_CORE && I2C |
| 91 | help | 91 | help |
| 92 | A DVB-T tuner module. Say Y when you want to support this frontend. | 92 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| 93 | 93 | ||
| 94 | config DVB_TDA1004X | 94 | config DVB_TDA1004X |
| 95 | tristate "Philips TDA10045H/TDA10046H based" | 95 | tristate "Philips TDA10045H/TDA10046H based" |
| 96 | depends on DVB_CORE | 96 | depends on DVB_CORE && I2C |
| 97 | select FW_LOADER | 97 | select FW_LOADER |
| 98 | help | 98 | help |
| 99 | A DVB-T tuner module. Say Y when you want to support this frontend. | 99 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| @@ -106,32 +106,32 @@ config DVB_TDA1004X | |||
| 106 | 106 | ||
| 107 | config DVB_NXT6000 | 107 | config DVB_NXT6000 |
| 108 | tristate "NxtWave Communications NXT6000 based" | 108 | tristate "NxtWave Communications NXT6000 based" |
| 109 | depends on DVB_CORE | 109 | depends on DVB_CORE && I2C |
| 110 | help | 110 | help |
| 111 | A DVB-T tuner module. Say Y when you want to support this frontend. | 111 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| 112 | 112 | ||
| 113 | config DVB_MT352 | 113 | config DVB_MT352 |
| 114 | tristate "Zarlink MT352 based" | 114 | tristate "Zarlink MT352 based" |
| 115 | depends on DVB_CORE | 115 | depends on DVB_CORE && I2C |
| 116 | help | 116 | help |
| 117 | A DVB-T tuner module. Say Y when you want to support this frontend. | 117 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| 118 | 118 | ||
| 119 | config DVB_ZL10353 | 119 | config DVB_ZL10353 |
| 120 | tristate "Zarlink ZL10353 based" | 120 | tristate "Zarlink ZL10353 based" |
| 121 | depends on DVB_CORE | 121 | depends on DVB_CORE && I2C |
| 122 | help | 122 | help |
| 123 | A DVB-T tuner module. Say Y when you want to support this frontend. | 123 | A DVB-T tuner module. Say Y when you want to support this frontend. |
| 124 | 124 | ||
| 125 | config DVB_DIB3000MB | 125 | config DVB_DIB3000MB |
| 126 | tristate "DiBcom 3000M-B" | 126 | tristate "DiBcom 3000M-B" |
| 127 | depends on DVB_CORE | 127 | depends on DVB_CORE && I2C |
| 128 | help | 128 | help |
| 129 | A DVB-T tuner module. Designed for mobile usage. Say Y when you want | 129 | A DVB-T tuner module. Designed for mobile usage. Say Y when you want |
| 130 | to support this frontend. | 130 | to support this frontend. |
| 131 | 131 | ||
| 132 | config DVB_DIB3000MC | 132 | config DVB_DIB3000MC |
| 133 | tristate "DiBcom 3000P/M-C" | 133 | tristate "DiBcom 3000P/M-C" |
| 134 | depends on DVB_CORE | 134 | depends on DVB_CORE && I2C |
| 135 | help | 135 | help |
| 136 | A DVB-T tuner module. Designed for mobile usage. Say Y when you want | 136 | A DVB-T tuner module. Designed for mobile usage. Say Y when you want |
| 137 | to support this frontend. | 137 | to support this frontend. |
| @@ -141,19 +141,19 @@ comment "DVB-C (cable) frontends" | |||
| 141 | 141 | ||
| 142 | config DVB_VES1820 | 142 | config DVB_VES1820 |
| 143 | tristate "VLSI VES1820 based" | 143 | tristate "VLSI VES1820 based" |
| 144 | depends on DVB_CORE | 144 | depends on DVB_CORE && I2C |
| 145 | help | 145 | help |
| 146 | A DVB-C tuner module. Say Y when you want to support this frontend. | 146 | A DVB-C tuner module. Say Y when you want to support this frontend. |
| 147 | 147 | ||
| 148 | config DVB_TDA10021 | 148 | config DVB_TDA10021 |
| 149 | tristate "Philips TDA10021 based" | 149 | tristate "Philips TDA10021 based" |
| 150 | depends on DVB_CORE | 150 | depends on DVB_CORE && I2C |
| 151 | help | 151 | help |
| 152 | A DVB-C tuner module. Say Y when you want to support this frontend. | 152 | A DVB-C tuner module. Say Y when you want to support this frontend. |
| 153 | 153 | ||
| 154 | config DVB_STV0297 | 154 | config DVB_STV0297 |
| 155 | tristate "ST STV0297 based" | 155 | tristate "ST STV0297 based" |
| 156 | depends on DVB_CORE | 156 | depends on DVB_CORE && I2C |
| 157 | help | 157 | help |
| 158 | A DVB-C tuner module. Say Y when you want to support this frontend. | 158 | A DVB-C tuner module. Say Y when you want to support this frontend. |
| 159 | 159 | ||
| @@ -162,7 +162,7 @@ comment "ATSC (North American/Korean Terrestrial/Cable DTV) frontends" | |||
| 162 | 162 | ||
| 163 | config DVB_NXT200X | 163 | config DVB_NXT200X |
| 164 | tristate "NxtWave Communications NXT2002/NXT2004 based" | 164 | tristate "NxtWave Communications NXT2002/NXT2004 based" |
| 165 | depends on DVB_CORE | 165 | depends on DVB_CORE && I2C |
| 166 | select FW_LOADER | 166 | select FW_LOADER |
| 167 | help | 167 | help |
| 168 | An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want | 168 | An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want |
| @@ -176,7 +176,7 @@ config DVB_NXT200X | |||
| 176 | 176 | ||
| 177 | config DVB_OR51211 | 177 | config DVB_OR51211 |
| 178 | tristate "Oren OR51211 based" | 178 | tristate "Oren OR51211 based" |
| 179 | depends on DVB_CORE | 179 | depends on DVB_CORE && I2C |
| 180 | select FW_LOADER | 180 | select FW_LOADER |
| 181 | help | 181 | help |
| 182 | An ATSC 8VSB tuner module. Say Y when you want to support this frontend. | 182 | An ATSC 8VSB tuner module. Say Y when you want to support this frontend. |
| @@ -188,7 +188,7 @@ config DVB_OR51211 | |||
| 188 | 188 | ||
| 189 | config DVB_OR51132 | 189 | config DVB_OR51132 |
| 190 | tristate "Oren OR51132 based" | 190 | tristate "Oren OR51132 based" |
| 191 | depends on DVB_CORE | 191 | depends on DVB_CORE && I2C |
| 192 | select FW_LOADER | 192 | select FW_LOADER |
| 193 | help | 193 | help |
| 194 | An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want | 194 | An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want |
| @@ -203,7 +203,7 @@ config DVB_OR51132 | |||
| 203 | 203 | ||
| 204 | config DVB_BCM3510 | 204 | config DVB_BCM3510 |
| 205 | tristate "Broadcom BCM3510" | 205 | tristate "Broadcom BCM3510" |
| 206 | depends on DVB_CORE | 206 | depends on DVB_CORE && I2C |
| 207 | select FW_LOADER | 207 | select FW_LOADER |
| 208 | help | 208 | help |
| 209 | An ATSC 8VSB/16VSB and QAM64/256 tuner module. Say Y when you want to | 209 | An ATSC 8VSB/16VSB and QAM64/256 tuner module. Say Y when you want to |
| @@ -211,7 +211,7 @@ config DVB_BCM3510 | |||
| 211 | 211 | ||
| 212 | config DVB_LGDT330X | 212 | config DVB_LGDT330X |
| 213 | tristate "LG Electronics LGDT3302/LGDT3303 based" | 213 | tristate "LG Electronics LGDT3302/LGDT3303 based" |
| 214 | depends on DVB_CORE | 214 | depends on DVB_CORE && I2C |
| 215 | help | 215 | help |
| 216 | An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want | 216 | An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want |
| 217 | to support this frontend. | 217 | to support this frontend. |
| @@ -220,15 +220,19 @@ config DVB_LGDT330X | |||
| 220 | comment "Miscellaneous devices" | 220 | comment "Miscellaneous devices" |
| 221 | depends on DVB_CORE | 221 | depends on DVB_CORE |
| 222 | 222 | ||
| 223 | config DVB_PLL | ||
| 224 | tristate | ||
| 225 | depends on DVB_CORE && I2C | ||
| 226 | |||
| 223 | config DVB_LNBP21 | 227 | config DVB_LNBP21 |
| 224 | tristate "LNBP21 SEC controller" | 228 | tristate "LNBP21 SEC controller" |
| 225 | depends on DVB_CORE | 229 | depends on DVB_CORE && I2C |
| 226 | help | 230 | help |
| 227 | An SEC control chip. | 231 | An SEC control chip. |
| 228 | 232 | ||
| 229 | config DVB_ISL6421 | 233 | config DVB_ISL6421 |
| 230 | tristate "ISL6421 SEC controller" | 234 | tristate "ISL6421 SEC controller" |
| 231 | depends on DVB_CORE | 235 | depends on DVB_CORE && I2C |
| 232 | help | 236 | help |
| 233 | An SEC control chip. | 237 | An SEC control chip. |
| 234 | 238 | ||
diff --git a/drivers/media/dvb/frontends/Makefile b/drivers/media/dvb/frontends/Makefile index 5222245c7f59..0e4880b6db14 100644 --- a/drivers/media/dvb/frontends/Makefile +++ b/drivers/media/dvb/frontends/Makefile | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ | 5 | EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ |
| 6 | 6 | ||
| 7 | obj-$(CONFIG_DVB_CORE) += dvb-pll.o | 7 | obj-$(CONFIG_DVB_PLL) += dvb-pll.o |
| 8 | obj-$(CONFIG_DVB_STV0299) += stv0299.o | 8 | obj-$(CONFIG_DVB_STV0299) += stv0299.o |
| 9 | obj-$(CONFIG_DVB_SP8870) += sp8870.o | 9 | obj-$(CONFIG_DVB_SP8870) += sp8870.o |
| 10 | obj-$(CONFIG_DVB_CX22700) += cx22700.o | 10 | obj-$(CONFIG_DVB_CX22700) += cx22700.o |
diff --git a/drivers/media/dvb/pluto2/Kconfig b/drivers/media/dvb/pluto2/Kconfig index 7d8e6e87bdbb..9b84b1bdc313 100644 --- a/drivers/media/dvb/pluto2/Kconfig +++ b/drivers/media/dvb/pluto2/Kconfig | |||
| @@ -2,6 +2,7 @@ config DVB_PLUTO2 | |||
| 2 | tristate "Pluto2 cards" | 2 | tristate "Pluto2 cards" |
| 3 | depends on DVB_CORE && PCI && I2C | 3 | depends on DVB_CORE && PCI && I2C |
| 4 | select I2C_ALGOBIT | 4 | select I2C_ALGOBIT |
| 5 | select DVB_PLL | ||
| 5 | select DVB_TDA1004X | 6 | select DVB_TDA1004X |
| 6 | help | 7 | help |
| 7 | Support for PCI cards based on the Pluto2 FPGA like the Satelco | 8 | Support for PCI cards based on the Pluto2 FPGA like the Satelco |
diff --git a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig index 987881fa988c..5fb097595cfb 100644 --- a/drivers/media/dvb/ttpci/Kconfig +++ b/drivers/media/dvb/ttpci/Kconfig | |||
| @@ -3,6 +3,7 @@ config DVB_AV7110 | |||
| 3 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 | 3 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 |
| 4 | select FW_LOADER | 4 | select FW_LOADER |
| 5 | select VIDEO_SAA7146_VV | 5 | select VIDEO_SAA7146_VV |
| 6 | select DVB_PLL | ||
| 6 | select DVB_VES1820 | 7 | select DVB_VES1820 |
| 7 | select DVB_VES1X93 | 8 | select DVB_VES1X93 |
| 8 | select DVB_STV0299 | 9 | select DVB_STV0299 |
| @@ -61,6 +62,7 @@ config DVB_BUDGET | |||
| 61 | tristate "Budget cards" | 62 | tristate "Budget cards" |
| 62 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 | 63 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 |
| 63 | select VIDEO_SAA7146 | 64 | select VIDEO_SAA7146 |
| 65 | select DVB_PLL | ||
| 64 | select DVB_STV0299 | 66 | select DVB_STV0299 |
| 65 | select DVB_VES1X93 | 67 | select DVB_VES1X93 |
| 66 | select DVB_VES1820 | 68 | select DVB_VES1820 |
| @@ -83,6 +85,7 @@ config DVB_BUDGET_CI | |||
| 83 | tristate "Budget cards with onboard CI connector" | 85 | tristate "Budget cards with onboard CI connector" |
| 84 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 | 86 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 |
| 85 | select VIDEO_SAA7146 | 87 | select VIDEO_SAA7146 |
| 88 | select DVB_PLL | ||
| 86 | select DVB_STV0297 | 89 | select DVB_STV0297 |
| 87 | select DVB_STV0299 | 90 | select DVB_STV0299 |
| 88 | select DVB_TDA1004X | 91 | select DVB_TDA1004X |
| @@ -104,6 +107,7 @@ config DVB_BUDGET_AV | |||
| 104 | tristate "Budget cards with analog video inputs" | 107 | tristate "Budget cards with analog video inputs" |
| 105 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 | 108 | depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 |
| 106 | select VIDEO_SAA7146_VV | 109 | select VIDEO_SAA7146_VV |
| 110 | select DVB_PLL | ||
| 107 | select DVB_STV0299 | 111 | select DVB_STV0299 |
| 108 | select DVB_TDA1004X | 112 | select DVB_TDA1004X |
| 109 | select DVB_TDA10021 | 113 | select DVB_TDA10021 |
| @@ -122,6 +126,7 @@ config DVB_BUDGET_PATCH | |||
| 122 | tristate "AV7110 cards with Budget Patch" | 126 | tristate "AV7110 cards with Budget Patch" |
| 123 | depends on DVB_CORE && DVB_BUDGET && VIDEO_V4L1 | 127 | depends on DVB_CORE && DVB_BUDGET && VIDEO_V4L1 |
| 124 | select DVB_AV7110 | 128 | select DVB_AV7110 |
| 129 | select DVB_PLL | ||
| 125 | select DVB_STV0299 | 130 | select DVB_STV0299 |
| 126 | select DVB_VES1X93 | 131 | select DVB_VES1X93 |
| 127 | select DVB_TDA8083 | 132 | select DVB_TDA8083 |
diff --git a/drivers/media/dvb/ttusb-budget/Kconfig b/drivers/media/dvb/ttusb-budget/Kconfig index 92c7cdcf8981..46a6a60d2ab9 100644 --- a/drivers/media/dvb/ttusb-budget/Kconfig +++ b/drivers/media/dvb/ttusb-budget/Kconfig | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | config DVB_TTUSB_BUDGET | 1 | config DVB_TTUSB_BUDGET |
| 2 | tristate "Technotrend/Hauppauge Nova-USB devices" | 2 | tristate "Technotrend/Hauppauge Nova-USB devices" |
| 3 | depends on DVB_CORE && USB | 3 | depends on DVB_CORE && USB && I2C |
| 4 | select DVB_PLL | ||
| 4 | select DVB_CX22700 | 5 | select DVB_CX22700 |
| 5 | select DVB_TDA1004X | 6 | select DVB_TDA1004X |
| 6 | select DVB_VES1820 | 7 | select DVB_VES1820 |
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 732bf1e7c326..94d078b77bab 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
| @@ -260,7 +260,7 @@ source "drivers/media/video/saa7134/Kconfig" | |||
| 260 | 260 | ||
| 261 | config VIDEO_MXB | 261 | config VIDEO_MXB |
| 262 | tristate "Siemens-Nixdorf 'Multimedia eXtension Board'" | 262 | tristate "Siemens-Nixdorf 'Multimedia eXtension Board'" |
| 263 | depends on PCI && VIDEO_V4L1 | 263 | depends on PCI && VIDEO_V4L1 && I2C |
| 264 | select VIDEO_SAA7146_VV | 264 | select VIDEO_SAA7146_VV |
| 265 | select VIDEO_TUNER | 265 | select VIDEO_TUNER |
| 266 | ---help--- | 266 | ---help--- |
| @@ -272,7 +272,7 @@ config VIDEO_MXB | |||
| 272 | 272 | ||
| 273 | config VIDEO_DPC | 273 | config VIDEO_DPC |
| 274 | tristate "Philips-Semiconductors 'dpc7146 demonstration board'" | 274 | tristate "Philips-Semiconductors 'dpc7146 demonstration board'" |
| 275 | depends on PCI && VIDEO_V4L1 | 275 | depends on PCI && VIDEO_V4L1 && I2C |
| 276 | select VIDEO_SAA7146_VV | 276 | select VIDEO_SAA7146_VV |
| 277 | select VIDEO_V4L2 | 277 | select VIDEO_V4L2 |
| 278 | ---help--- | 278 | ---help--- |
| @@ -287,7 +287,7 @@ config VIDEO_DPC | |||
| 287 | 287 | ||
| 288 | config VIDEO_HEXIUM_ORION | 288 | config VIDEO_HEXIUM_ORION |
| 289 | tristate "Hexium HV-PCI6 and Orion frame grabber" | 289 | tristate "Hexium HV-PCI6 and Orion frame grabber" |
| 290 | depends on PCI && VIDEO_V4L1 | 290 | depends on PCI && VIDEO_V4L1 && I2C |
| 291 | select VIDEO_SAA7146_VV | 291 | select VIDEO_SAA7146_VV |
| 292 | select VIDEO_V4L2 | 292 | select VIDEO_V4L2 |
| 293 | ---help--- | 293 | ---help--- |
| @@ -299,7 +299,7 @@ config VIDEO_HEXIUM_ORION | |||
| 299 | 299 | ||
| 300 | config VIDEO_HEXIUM_GEMINI | 300 | config VIDEO_HEXIUM_GEMINI |
| 301 | tristate "Hexium Gemini frame grabber" | 301 | tristate "Hexium Gemini frame grabber" |
| 302 | depends on PCI && VIDEO_V4L1 | 302 | depends on PCI && VIDEO_V4L1 && I2C |
| 303 | select VIDEO_SAA7146_VV | 303 | select VIDEO_SAA7146_VV |
| 304 | select VIDEO_V4L2 | 304 | select VIDEO_V4L2 |
| 305 | ---help--- | 305 | ---help--- |
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c index b41f81d2372c..933d6db09acb 100644 --- a/drivers/media/video/bt8xx/bttv-input.c +++ b/drivers/media/video/bt8xx/bttv-input.c | |||
| @@ -303,6 +303,7 @@ int bttv_input_init(struct bttv *btv) | |||
| 303 | ir->mask_keyup = 0x010000; | 303 | ir->mask_keyup = 0x010000; |
| 304 | ir->polling = 50; // ms | 304 | ir->polling = 50; // ms |
| 305 | break; | 305 | break; |
| 306 | case BTTV_BOARD_PV_M4900: | ||
| 306 | case BTTV_BOARD_PV_BT878P_9B: | 307 | case BTTV_BOARD_PV_BT878P_9B: |
| 307 | case BTTV_BOARD_PV_BT878P_PLUS: | 308 | case BTTV_BOARD_PV_BT878P_PLUS: |
| 308 | ir_codes = ir_codes_pixelview; | 309 | ir_codes = ir_codes_pixelview; |
diff --git a/drivers/media/video/cx88/Kconfig b/drivers/media/video/cx88/Kconfig index 80e23ee9801c..7a94e6a11927 100644 --- a/drivers/media/video/cx88/Kconfig +++ b/drivers/media/video/cx88/Kconfig | |||
| @@ -51,6 +51,7 @@ config VIDEO_CX88_DVB | |||
| 51 | tristate "DVB/ATSC Support for cx2388x based TV cards" | 51 | tristate "DVB/ATSC Support for cx2388x based TV cards" |
| 52 | depends on VIDEO_CX88 && DVB_CORE | 52 | depends on VIDEO_CX88 && DVB_CORE |
| 53 | select VIDEO_BUF_DVB | 53 | select VIDEO_BUF_DVB |
| 54 | select DVB_PLL | ||
| 54 | ---help--- | 55 | ---help--- |
| 55 | This adds support for DVB/ATSC cards based on the | 56 | This adds support for DVB/ATSC cards based on the |
| 56 | Conexant 2388x chip. | 57 | Conexant 2388x chip. |
diff --git a/drivers/media/video/saa7134/Kconfig b/drivers/media/video/saa7134/Kconfig index e1c1805df1fb..f5543166d193 100644 --- a/drivers/media/video/saa7134/Kconfig +++ b/drivers/media/video/saa7134/Kconfig | |||
| @@ -40,6 +40,7 @@ config VIDEO_SAA7134_DVB | |||
| 40 | depends on VIDEO_SAA7134 && DVB_CORE | 40 | depends on VIDEO_SAA7134 && DVB_CORE |
| 41 | select VIDEO_BUF_DVB | 41 | select VIDEO_BUF_DVB |
| 42 | select FW_LOADER | 42 | select FW_LOADER |
| 43 | select DVB_PLL | ||
| 43 | ---help--- | 44 | ---help--- |
| 44 | This adds support for DVB cards based on the | 45 | This adds support for DVB cards based on the |
| 45 | Philips saa7134 chip. | 46 | Philips saa7134 chip. |
diff --git a/drivers/media/video/tuner-types.c b/drivers/media/video/tuner-types.c index d7eadc2c298d..8b542599ed47 100644 --- a/drivers/media/video/tuner-types.c +++ b/drivers/media/video/tuner-types.c | |||
| @@ -926,11 +926,17 @@ static struct tuner_params tuner_lg_tdvs_h06xf_params[] = { | |||
| 926 | 926 | ||
| 927 | /* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */ | 927 | /* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */ |
| 928 | 928 | ||
| 929 | static struct tuner_range tuner_ymec_tvf66t5_b_dff_pal_ranges[] = { | ||
| 930 | { 16 * 160.25 /*MHz*/, 0x8e, 0x01, }, | ||
| 931 | { 16 * 464.25 /*MHz*/, 0x8e, 0x02, }, | ||
| 932 | { 16 * 999.99 , 0x8e, 0x08, }, | ||
| 933 | }; | ||
| 934 | |||
| 929 | static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = { | 935 | static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = { |
| 930 | { | 936 | { |
| 931 | .type = TUNER_PARAM_TYPE_PAL, | 937 | .type = TUNER_PARAM_TYPE_PAL, |
| 932 | .ranges = tuner_tena_9533_di_pal_ranges, | 938 | .ranges = tuner_ymec_tvf66t5_b_dff_pal_ranges, |
| 933 | .count = ARRAY_SIZE(tuner_tena_9533_di_pal_ranges), | 939 | .count = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_pal_ranges), |
| 934 | }, | 940 | }, |
| 935 | }; | 941 | }; |
| 936 | 942 | ||
diff --git a/drivers/media/video/zoran.h b/drivers/media/video/zoran.h index ffcda95ed9d4..8fb4a3414e0a 100644 --- a/drivers/media/video/zoran.h +++ b/drivers/media/video/zoran.h | |||
| @@ -267,7 +267,7 @@ struct zoran_v4l_settings { | |||
| 267 | }; | 267 | }; |
| 268 | 268 | ||
| 269 | /* whoops, this one is undeclared if !v4l2 */ | 269 | /* whoops, this one is undeclared if !v4l2 */ |
| 270 | #ifndef HAVE_V4L2 | 270 | #ifndef CONFIG_VIDEO_V4L2 |
| 271 | struct v4l2_jpegcompression { | 271 | struct v4l2_jpegcompression { |
| 272 | int quality; | 272 | int quality; |
| 273 | int APPn; | 273 | int APPn; |
diff --git a/drivers/media/video/zoran_driver.c b/drivers/media/video/zoran_driver.c index d9a5876eb386..5f90db27892b 100644 --- a/drivers/media/video/zoran_driver.c +++ b/drivers/media/video/zoran_driver.c | |||
| @@ -86,7 +86,7 @@ | |||
| 86 | #include "zoran_device.h" | 86 | #include "zoran_device.h" |
| 87 | #include "zoran_card.h" | 87 | #include "zoran_card.h" |
| 88 | 88 | ||
| 89 | #ifdef HAVE_V4L2 | 89 | #ifdef CONFIG_VIDEO_V4L2 |
| 90 | /* we declare some card type definitions here, they mean | 90 | /* we declare some card type definitions here, they mean |
| 91 | * the same as the v4l1 ZORAN_VID_TYPE above, except it's v4l2 */ | 91 | * the same as the v4l1 ZORAN_VID_TYPE above, except it's v4l2 */ |
| 92 | #define ZORAN_V4L2_VID_FLAGS ( \ | 92 | #define ZORAN_V4L2_VID_FLAGS ( \ |
| @@ -103,7 +103,7 @@ const struct zoran_format zoran_formats[] = { | |||
| 103 | { | 103 | { |
| 104 | .name = "15-bit RGB", | 104 | .name = "15-bit RGB", |
| 105 | .palette = VIDEO_PALETTE_RGB555, | 105 | .palette = VIDEO_PALETTE_RGB555, |
| 106 | #ifdef HAVE_V4L2 | 106 | #ifdef CONFIG_VIDEO_V4L2 |
| 107 | #ifdef __LITTLE_ENDIAN | 107 | #ifdef __LITTLE_ENDIAN |
| 108 | .fourcc = V4L2_PIX_FMT_RGB555, | 108 | .fourcc = V4L2_PIX_FMT_RGB555, |
| 109 | #else | 109 | #else |
| @@ -117,7 +117,7 @@ const struct zoran_format zoran_formats[] = { | |||
| 117 | }, { | 117 | }, { |
| 118 | .name = "16-bit RGB", | 118 | .name = "16-bit RGB", |
| 119 | .palette = VIDEO_PALETTE_RGB565, | 119 | .palette = VIDEO_PALETTE_RGB565, |
| 120 | #ifdef HAVE_V4L2 | 120 | #ifdef CONFIG_VIDEO_V4L2 |
| 121 | #ifdef __LITTLE_ENDIAN | 121 | #ifdef __LITTLE_ENDIAN |
| 122 | .fourcc = V4L2_PIX_FMT_RGB565, | 122 | .fourcc = V4L2_PIX_FMT_RGB565, |
| 123 | #else | 123 | #else |
| @@ -131,7 +131,7 @@ const struct zoran_format zoran_formats[] = { | |||
| 131 | }, { | 131 | }, { |
| 132 | .name = "24-bit RGB", | 132 | .name = "24-bit RGB", |
| 133 | .palette = VIDEO_PALETTE_RGB24, | 133 | .palette = VIDEO_PALETTE_RGB24, |
| 134 | #ifdef HAVE_V4L2 | 134 | #ifdef CONFIG_VIDEO_V4L2 |
| 135 | #ifdef __LITTLE_ENDIAN | 135 | #ifdef __LITTLE_ENDIAN |
| 136 | .fourcc = V4L2_PIX_FMT_BGR24, | 136 | .fourcc = V4L2_PIX_FMT_BGR24, |
| 137 | #else | 137 | #else |
| @@ -145,7 +145,7 @@ const struct zoran_format zoran_formats[] = { | |||
| 145 | }, { | 145 | }, { |
| 146 | .name = "32-bit RGB", | 146 | .name = "32-bit RGB", |
| 147 | .palette = VIDEO_PALETTE_RGB32, | 147 | .palette = VIDEO_PALETTE_RGB32, |
| 148 | #ifdef HAVE_V4L2 | 148 | #ifdef CONFIG_VIDEO_V4L2 |
| 149 | #ifdef __LITTLE_ENDIAN | 149 | #ifdef __LITTLE_ENDIAN |
| 150 | .fourcc = V4L2_PIX_FMT_BGR32, | 150 | .fourcc = V4L2_PIX_FMT_BGR32, |
| 151 | #else | 151 | #else |
| @@ -159,7 +159,7 @@ const struct zoran_format zoran_formats[] = { | |||
| 159 | }, { | 159 | }, { |
| 160 | .name = "4:2:2, packed, YUYV", | 160 | .name = "4:2:2, packed, YUYV", |
| 161 | .palette = VIDEO_PALETTE_YUV422, | 161 | .palette = VIDEO_PALETTE_YUV422, |
| 162 | #ifdef HAVE_V4L2 | 162 | #ifdef CONFIG_VIDEO_V4L2 |
| 163 | .fourcc = V4L2_PIX_FMT_YUYV, | 163 | .fourcc = V4L2_PIX_FMT_YUYV, |
| 164 | .colorspace = V4L2_COLORSPACE_SMPTE170M, | 164 | .colorspace = V4L2_COLORSPACE_SMPTE170M, |
| 165 | #endif | 165 | #endif |
| @@ -169,7 +169,7 @@ const struct zoran_format zoran_formats[] = { | |||
| 169 | }, { | 169 | }, { |
| 170 | .name = "Hardware-encoded Motion-JPEG", | 170 | .name = "Hardware-encoded Motion-JPEG", |
| 171 | .palette = -1, | 171 | .palette = -1, |
| 172 | #ifdef HAVE_V4L2 | 172 | #ifdef CONFIG_VIDEO_V4L2 |
| 173 | .fourcc = V4L2_PIX_FMT_MJPEG, | 173 | .fourcc = V4L2_PIX_FMT_MJPEG, |
| 174 | .colorspace = V4L2_COLORSPACE_SMPTE170M, | 174 | .colorspace = V4L2_COLORSPACE_SMPTE170M, |
| 175 | #endif | 175 | #endif |
| @@ -210,7 +210,7 @@ static int lock_norm = 0; /* 1=Don't change TV standard (norm) */ | |||
| 210 | module_param(lock_norm, int, 0); | 210 | module_param(lock_norm, int, 0); |
| 211 | MODULE_PARM_DESC(lock_norm, "Users can't change norm"); | 211 | MODULE_PARM_DESC(lock_norm, "Users can't change norm"); |
| 212 | 212 | ||
| 213 | #ifdef HAVE_V4L2 | 213 | #ifdef CONFIG_VIDEO_V4L2 |
| 214 | /* small helper function for calculating buffersizes for v4l2 | 214 | /* small helper function for calculating buffersizes for v4l2 |
| 215 | * we calculate the nearest higher power-of-two, which | 215 | * we calculate the nearest higher power-of-two, which |
| 216 | * will be the recommended buffersize */ | 216 | * will be the recommended buffersize */ |
| @@ -1761,7 +1761,7 @@ setup_overlay (struct file *file, | |||
| 1761 | return wait_grab_pending(zr); | 1761 | return wait_grab_pending(zr); |
| 1762 | } | 1762 | } |
| 1763 | 1763 | ||
| 1764 | #ifdef HAVE_V4L2 | 1764 | #ifdef CONFIG_VIDEO_V4L2 |
| 1765 | /* get the status of a buffer in the clients buffer queue */ | 1765 | /* get the status of a buffer in the clients buffer queue */ |
| 1766 | static int | 1766 | static int |
| 1767 | zoran_v4l2_buffer_status (struct file *file, | 1767 | zoran_v4l2_buffer_status (struct file *file, |
| @@ -2676,7 +2676,7 @@ zoran_do_ioctl (struct inode *inode, | |||
| 2676 | } | 2676 | } |
| 2677 | break; | 2677 | break; |
| 2678 | 2678 | ||
| 2679 | #ifdef HAVE_V4L2 | 2679 | #ifdef CONFIG_VIDEO_V4L2 |
| 2680 | 2680 | ||
| 2681 | /* The new video4linux2 capture interface - much nicer than video4linux1, since | 2681 | /* The new video4linux2 capture interface - much nicer than video4linux1, since |
| 2682 | * it allows for integrating the JPEG capturing calls inside standard v4l2 | 2682 | * it allows for integrating the JPEG capturing calls inside standard v4l2 |
| @@ -4689,7 +4689,7 @@ static struct file_operations zoran_fops = { | |||
| 4689 | struct video_device zoran_template __devinitdata = { | 4689 | struct video_device zoran_template __devinitdata = { |
| 4690 | .name = ZORAN_NAME, | 4690 | .name = ZORAN_NAME, |
| 4691 | .type = ZORAN_VID_TYPE, | 4691 | .type = ZORAN_VID_TYPE, |
| 4692 | #ifdef HAVE_V4L2 | 4692 | #ifdef CONFIG_VIDEO_V4L2 |
| 4693 | .type2 = ZORAN_V4L2_VID_FLAGS, | 4693 | .type2 = ZORAN_V4L2_VID_FLAGS, |
| 4694 | #endif | 4694 | #endif |
| 4695 | .hardware = ZORAN_HARDWARE, | 4695 | .hardware = ZORAN_HARDWARE, |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 301573373c30..cbede06cac27 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
| @@ -1579,7 +1579,7 @@ static int __init serial_console_setup(struct console *co, char *options) | |||
| 1579 | h8300_sci_enable(port, sci_enable); | 1579 | h8300_sci_enable(port, sci_enable); |
| 1580 | #endif | 1580 | #endif |
| 1581 | #elif defined(CONFIG_SUPERH64) | 1581 | #elif defined(CONFIG_SUPERH64) |
| 1582 | port->uartclk = current_cpu_info.module_clock * 16; | 1582 | port->uartclk = current_cpu_data.module_clock * 16; |
| 1583 | #else | 1583 | #else |
| 1584 | { | 1584 | { |
| 1585 | struct clk *clk = clk_get("module_clk"); | 1585 | struct clk *clk = clk_get("module_clk"); |
| @@ -1720,7 +1720,7 @@ static int __init sci_init(void) | |||
| 1720 | #if defined(__H8300H__) || defined(__H8300S__) | 1720 | #if defined(__H8300H__) || defined(__H8300S__) |
| 1721 | sciport->port.uartclk = CONFIG_CPU_CLOCK; | 1721 | sciport->port.uartclk = CONFIG_CPU_CLOCK; |
| 1722 | #elif defined(CONFIG_SUPERH64) | 1722 | #elif defined(CONFIG_SUPERH64) |
| 1723 | sciport->port.uartclk = current_cpu_info.module_clock * 16; | 1723 | sciport->port.uartclk = current_cpu_data.module_clock * 16; |
| 1724 | #else | 1724 | #else |
| 1725 | struct clk *clk = clk_get("module_clk"); | 1725 | struct clk *clk = clk_get("module_clk"); |
| 1726 | sciport->port.uartclk = clk_get_rate(clk) * 16; | 1726 | sciport->port.uartclk = clk_get_rate(clk) * 16; |
diff --git a/drivers/usb/input/yealink.c b/drivers/usb/input/yealink.c index 575a4e672e96..7b45fd3de911 100644 --- a/drivers/usb/input/yealink.c +++ b/drivers/usb/input/yealink.c | |||
| @@ -810,12 +810,9 @@ static int usb_cleanup(struct yealink_dev *yld, int err) | |||
| 810 | if (yld == NULL) | 810 | if (yld == NULL) |
| 811 | return err; | 811 | return err; |
| 812 | 812 | ||
| 813 | if (yld->urb_irq) { | 813 | usb_kill_urb(yld->urb_irq); /* parameter validation in core/urb */ |
| 814 | usb_kill_urb(yld->urb_irq); | 814 | usb_kill_urb(yld->urb_ctl); /* parameter validation in core/urb */ |
| 815 | usb_free_urb(yld->urb_irq); | 815 | |
| 816 | } | ||
| 817 | if (yld->urb_ctl) | ||
| 818 | usb_free_urb(yld->urb_ctl); | ||
| 819 | if (yld->idev) { | 816 | if (yld->idev) { |
| 820 | if (err) | 817 | if (err) |
| 821 | input_free_device(yld->idev); | 818 | input_free_device(yld->idev); |
| @@ -831,6 +828,9 @@ static int usb_cleanup(struct yealink_dev *yld, int err) | |||
| 831 | if (yld->irq_data) | 828 | if (yld->irq_data) |
| 832 | usb_buffer_free(yld->udev, USB_PKT_LEN, | 829 | usb_buffer_free(yld->udev, USB_PKT_LEN, |
| 833 | yld->irq_data, yld->irq_dma); | 830 | yld->irq_data, yld->irq_dma); |
| 831 | |||
| 832 | usb_free_urb(yld->urb_irq); /* parameter validation in core/urb */ | ||
| 833 | usb_free_urb(yld->urb_ctl); /* parameter validation in core/urb */ | ||
| 834 | kfree(yld); | 834 | kfree(yld); |
| 835 | return err; | 835 | return err; |
| 836 | } | 836 | } |
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 12c1694d322e..e06a41bd0f3b 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
| @@ -464,8 +464,10 @@ static int serial_read_proc (char *page, char **start, off_t off, int count, int | |||
| 464 | length += sprintf (page+length, " path:%s", tmp); | 464 | length += sprintf (page+length, " path:%s", tmp); |
| 465 | 465 | ||
| 466 | length += sprintf (page+length, "\n"); | 466 | length += sprintf (page+length, "\n"); |
| 467 | if ((length + begin) > (off + count)) | 467 | if ((length + begin) > (off + count)) { |
| 468 | usb_serial_put(serial); | ||
| 468 | goto done; | 469 | goto done; |
| 470 | } | ||
| 469 | if ((length + begin) < off) { | 471 | if ((length + begin) < off) { |
| 470 | begin += length; | 472 | begin += length; |
| 471 | length = 0; | 473 | length = 0; |
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index 105761e3ba0e..9aeb58a7d369 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c | |||
| @@ -82,7 +82,6 @@ static int construct_dentry(struct qstr *qstring, struct file *file, | |||
| 82 | if(*ptmp_inode == NULL) | 82 | if(*ptmp_inode == NULL) |
| 83 | return rc; | 83 | return rc; |
| 84 | rc = 1; | 84 | rc = 1; |
| 85 | d_instantiate(tmp_dentry, *ptmp_inode); | ||
| 86 | } | 85 | } |
| 87 | } else { | 86 | } else { |
| 88 | tmp_dentry = d_alloc(file->f_dentry, qstring); | 87 | tmp_dentry = d_alloc(file->f_dentry, qstring); |
| @@ -99,9 +98,7 @@ static int construct_dentry(struct qstr *qstring, struct file *file, | |||
| 99 | tmp_dentry->d_op = &cifs_dentry_ops; | 98 | tmp_dentry->d_op = &cifs_dentry_ops; |
| 100 | if(*ptmp_inode == NULL) | 99 | if(*ptmp_inode == NULL) |
| 101 | return rc; | 100 | return rc; |
| 102 | rc = 1; | 101 | rc = 2; |
| 103 | d_instantiate(tmp_dentry, *ptmp_inode); | ||
| 104 | d_rehash(tmp_dentry); | ||
| 105 | } | 102 | } |
| 106 | 103 | ||
| 107 | tmp_dentry->d_time = jiffies; | 104 | tmp_dentry->d_time = jiffies; |
| @@ -870,6 +867,12 @@ static int cifs_filldir(char *pfindEntry, struct file *file, | |||
| 870 | pfindEntry, &obj_type, rc); | 867 | pfindEntry, &obj_type, rc); |
| 871 | else | 868 | else |
| 872 | fill_in_inode(tmp_inode, 1 /* NT */, pfindEntry, &obj_type, rc); | 869 | fill_in_inode(tmp_inode, 1 /* NT */, pfindEntry, &obj_type, rc); |
| 870 | |||
| 871 | if(rc) /* new inode - needs to be tied to dentry */ { | ||
| 872 | d_instantiate(tmp_dentry, tmp_inode); | ||
| 873 | if(rc == 2) | ||
| 874 | d_rehash(tmp_dentry); | ||
| 875 | } | ||
| 873 | 876 | ||
| 874 | 877 | ||
| 875 | rc = filldir(direntry,qstring.name,qstring.len,file->f_pos, | 878 | rc = filldir(direntry,qstring.name,qstring.len,file->f_pos, |
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index c40f81ba9b13..34dcb43a7837 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
| @@ -1390,11 +1390,19 @@ xfs_vm_direct_IO( | |||
| 1390 | 1390 | ||
| 1391 | iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN); | 1391 | iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN); |
| 1392 | 1392 | ||
| 1393 | ret = blockdev_direct_IO_own_locking(rw, iocb, inode, | 1393 | if (rw == WRITE) { |
| 1394 | iomap.iomap_target->bt_bdev, | 1394 | ret = blockdev_direct_IO_own_locking(rw, iocb, inode, |
| 1395 | iov, offset, nr_segs, | 1395 | iomap.iomap_target->bt_bdev, |
| 1396 | xfs_get_blocks_direct, | 1396 | iov, offset, nr_segs, |
| 1397 | xfs_end_io_direct); | 1397 | xfs_get_blocks_direct, |
| 1398 | xfs_end_io_direct); | ||
| 1399 | } else { | ||
| 1400 | ret = blockdev_direct_IO_no_locking(rw, iocb, inode, | ||
| 1401 | iomap.iomap_target->bt_bdev, | ||
| 1402 | iov, offset, nr_segs, | ||
| 1403 | xfs_get_blocks_direct, | ||
| 1404 | xfs_end_io_direct); | ||
| 1405 | } | ||
| 1398 | 1406 | ||
| 1399 | if (unlikely(ret <= 0 && iocb->private)) | 1407 | if (unlikely(ret <= 0 && iocb->private)) |
| 1400 | xfs_destroy_ioend(iocb->private); | 1408 | xfs_destroy_ioend(iocb->private); |
diff --git a/fs/xfs/linux-2.6/xfs_lrw.c b/fs/xfs/linux-2.6/xfs_lrw.c index 5d9cfd91ad08..ee788b1cb364 100644 --- a/fs/xfs/linux-2.6/xfs_lrw.c +++ b/fs/xfs/linux-2.6/xfs_lrw.c | |||
| @@ -264,7 +264,9 @@ xfs_read( | |||
| 264 | dmflags, &locktype); | 264 | dmflags, &locktype); |
| 265 | if (ret) { | 265 | if (ret) { |
| 266 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | 266 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); |
| 267 | goto unlock_mutex; | 267 | if (unlikely(ioflags & IO_ISDIRECT)) |
| 268 | mutex_unlock(&inode->i_mutex); | ||
| 269 | return ret; | ||
| 268 | } | 270 | } |
| 269 | } | 271 | } |
| 270 | 272 | ||
| @@ -272,6 +274,9 @@ xfs_read( | |||
| 272 | bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)), | 274 | bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)), |
| 273 | -1, FI_REMAPF_LOCKED); | 275 | -1, FI_REMAPF_LOCKED); |
| 274 | 276 | ||
| 277 | if (unlikely(ioflags & IO_ISDIRECT)) | ||
| 278 | mutex_unlock(&inode->i_mutex); | ||
| 279 | |||
| 275 | xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore, | 280 | xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore, |
| 276 | (void *)iovp, segs, *offset, ioflags); | 281 | (void *)iovp, segs, *offset, ioflags); |
| 277 | ret = __generic_file_aio_read(iocb, iovp, segs, offset); | 282 | ret = __generic_file_aio_read(iocb, iovp, segs, offset); |
| @@ -281,10 +286,6 @@ xfs_read( | |||
| 281 | XFS_STATS_ADD(xs_read_bytes, ret); | 286 | XFS_STATS_ADD(xs_read_bytes, ret); |
| 282 | 287 | ||
| 283 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | 288 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); |
| 284 | |||
| 285 | unlock_mutex: | ||
| 286 | if (unlikely(ioflags & IO_ISDIRECT)) | ||
| 287 | mutex_unlock(&inode->i_mutex); | ||
| 288 | return ret; | 289 | return ret; |
| 289 | } | 290 | } |
| 290 | 291 | ||
| @@ -390,6 +391,8 @@ xfs_splice_write( | |||
| 390 | xfs_inode_t *ip = XFS_BHVTOI(bdp); | 391 | xfs_inode_t *ip = XFS_BHVTOI(bdp); |
| 391 | xfs_mount_t *mp = ip->i_mount; | 392 | xfs_mount_t *mp = ip->i_mount; |
| 392 | ssize_t ret; | 393 | ssize_t ret; |
| 394 | struct inode *inode = outfilp->f_mapping->host; | ||
| 395 | xfs_fsize_t isize; | ||
| 393 | 396 | ||
| 394 | XFS_STATS_INC(xs_write_calls); | 397 | XFS_STATS_INC(xs_write_calls); |
| 395 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | 398 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
| @@ -416,6 +419,20 @@ xfs_splice_write( | |||
| 416 | if (ret > 0) | 419 | if (ret > 0) |
| 417 | XFS_STATS_ADD(xs_write_bytes, ret); | 420 | XFS_STATS_ADD(xs_write_bytes, ret); |
| 418 | 421 | ||
| 422 | isize = i_size_read(inode); | ||
| 423 | if (unlikely(ret < 0 && ret != -EFAULT && *ppos > isize)) | ||
| 424 | *ppos = isize; | ||
| 425 | |||
| 426 | if (*ppos > ip->i_d.di_size) { | ||
| 427 | xfs_ilock(ip, XFS_ILOCK_EXCL); | ||
| 428 | if (*ppos > ip->i_d.di_size) { | ||
| 429 | ip->i_d.di_size = *ppos; | ||
| 430 | i_size_write(inode, *ppos); | ||
| 431 | ip->i_update_core = 1; | ||
| 432 | ip->i_update_size = 1; | ||
| 433 | } | ||
| 434 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | ||
| 435 | } | ||
| 419 | xfs_iunlock(ip, XFS_IOLOCK_EXCL); | 436 | xfs_iunlock(ip, XFS_IOLOCK_EXCL); |
| 420 | return ret; | 437 | return ret; |
| 421 | } | 438 | } |
diff --git a/fs/xfs/quota/xfs_qm_bhv.c b/fs/xfs/quota/xfs_qm_bhv.c index f137856c3261..db8872be8c87 100644 --- a/fs/xfs/quota/xfs_qm_bhv.c +++ b/fs/xfs/quota/xfs_qm_bhv.c | |||
| @@ -203,7 +203,7 @@ xfs_qm_statvfs( | |||
| 203 | if (error || !vnode) | 203 | if (error || !vnode) |
| 204 | return error; | 204 | return error; |
| 205 | 205 | ||
| 206 | mp = XFS_BHVTOM(bhv); | 206 | mp = xfs_vfstom(bhvtovfs(bhv)); |
| 207 | ip = xfs_vtoi(vnode); | 207 | ip = xfs_vtoi(vnode); |
| 208 | 208 | ||
| 209 | if (!(ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)) | 209 | if (!(ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)) |
diff --git a/fs/xfs/xfs_alloc.h b/fs/xfs/xfs_alloc.h index 650591f999ae..5a4256120ccc 100644 --- a/fs/xfs/xfs_alloc.h +++ b/fs/xfs/xfs_alloc.h | |||
| @@ -44,6 +44,26 @@ typedef enum xfs_alloctype | |||
| 44 | #define XFS_ALLOC_FLAG_FREEING 0x00000002 /* indicate caller is freeing extents*/ | 44 | #define XFS_ALLOC_FLAG_FREEING 0x00000002 /* indicate caller is freeing extents*/ |
| 45 | 45 | ||
| 46 | /* | 46 | /* |
| 47 | * In order to avoid ENOSPC-related deadlock caused by | ||
| 48 | * out-of-order locking of AGF buffer (PV 947395), we place | ||
| 49 | * constraints on the relationship among actual allocations for | ||
| 50 | * data blocks, freelist blocks, and potential file data bmap | ||
| 51 | * btree blocks. However, these restrictions may result in no | ||
| 52 | * actual space allocated for a delayed extent, for example, a data | ||
| 53 | * block in a certain AG is allocated but there is no additional | ||
| 54 | * block for the additional bmap btree block due to a split of the | ||
| 55 | * bmap btree of the file. The result of this may lead to an | ||
| 56 | * infinite loop in xfssyncd when the file gets flushed to disk and | ||
| 57 | * all delayed extents need to be actually allocated. To get around | ||
| 58 | * this, we explicitly set aside a few blocks which will not be | ||
| 59 | * reserved in delayed allocation. Considering the minimum number of | ||
| 60 | * needed freelist blocks is 4 fsbs _per AG_, a potential split of file's bmap | ||
| 61 | * btree requires 1 fsb, so we set the number of set-aside blocks | ||
| 62 | * to 4 + 4*agcount. | ||
| 63 | */ | ||
| 64 | #define XFS_ALLOC_SET_ASIDE(mp) (4 + ((mp)->m_sb.sb_agcount * 4)) | ||
| 65 | |||
| 66 | /* | ||
| 47 | * Argument structure for xfs_alloc routines. | 67 | * Argument structure for xfs_alloc routines. |
| 48 | * This is turned into a structure to avoid having 20 arguments passed | 68 | * This is turned into a structure to avoid having 20 arguments passed |
| 49 | * down several levels of the stack. | 69 | * down several levels of the stack. |
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 077629bab532..c064e72ada9e 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
| @@ -462,7 +462,7 @@ xfs_fs_counts( | |||
| 462 | 462 | ||
| 463 | xfs_icsb_sync_counters_lazy(mp); | 463 | xfs_icsb_sync_counters_lazy(mp); |
| 464 | s = XFS_SB_LOCK(mp); | 464 | s = XFS_SB_LOCK(mp); |
| 465 | cnt->freedata = mp->m_sb.sb_fdblocks; | 465 | cnt->freedata = mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); |
| 466 | cnt->freertx = mp->m_sb.sb_frextents; | 466 | cnt->freertx = mp->m_sb.sb_frextents; |
| 467 | cnt->freeino = mp->m_sb.sb_ifree; | 467 | cnt->freeino = mp->m_sb.sb_ifree; |
| 468 | cnt->allocino = mp->m_sb.sb_icount; | 468 | cnt->allocino = mp->m_sb.sb_icount; |
| @@ -519,15 +519,19 @@ xfs_reserve_blocks( | |||
| 519 | } | 519 | } |
| 520 | mp->m_resblks = request; | 520 | mp->m_resblks = request; |
| 521 | } else { | 521 | } else { |
| 522 | __int64_t free; | ||
| 523 | |||
| 524 | free = mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); | ||
| 522 | delta = request - mp->m_resblks; | 525 | delta = request - mp->m_resblks; |
| 523 | lcounter = mp->m_sb.sb_fdblocks - delta; | 526 | lcounter = free - delta; |
| 524 | if (lcounter < 0) { | 527 | if (lcounter < 0) { |
| 525 | /* We can't satisfy the request, just get what we can */ | 528 | /* We can't satisfy the request, just get what we can */ |
| 526 | mp->m_resblks += mp->m_sb.sb_fdblocks; | 529 | mp->m_resblks += free; |
| 527 | mp->m_resblks_avail += mp->m_sb.sb_fdblocks; | 530 | mp->m_resblks_avail += free; |
| 528 | mp->m_sb.sb_fdblocks = 0; | 531 | mp->m_sb.sb_fdblocks = XFS_ALLOC_SET_ASIDE(mp); |
| 529 | } else { | 532 | } else { |
| 530 | mp->m_sb.sb_fdblocks = lcounter; | 533 | mp->m_sb.sb_fdblocks = |
| 534 | lcounter + XFS_ALLOC_SET_ASIDE(mp); | ||
| 531 | mp->m_resblks = request; | 535 | mp->m_resblks = request; |
| 532 | mp->m_resblks_avail += delta; | 536 | mp->m_resblks_avail += delta; |
| 533 | } | 537 | } |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 4be5c0b2d296..9dfae18d995f 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
| @@ -1243,24 +1243,6 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields) | |||
| 1243 | xfs_trans_log_buf(tp, bp, first, last); | 1243 | xfs_trans_log_buf(tp, bp, first, last); |
| 1244 | } | 1244 | } |
| 1245 | 1245 | ||
| 1246 | /* | ||
| 1247 | * In order to avoid ENOSPC-related deadlock caused by | ||
| 1248 | * out-of-order locking of AGF buffer (PV 947395), we place | ||
| 1249 | * constraints on the relationship among actual allocations for | ||
| 1250 | * data blocks, freelist blocks, and potential file data bmap | ||
| 1251 | * btree blocks. However, these restrictions may result in no | ||
| 1252 | * actual space allocated for a delayed extent, for example, a data | ||
| 1253 | * block in a certain AG is allocated but there is no additional | ||
| 1254 | * block for the additional bmap btree block due to a split of the | ||
| 1255 | * bmap btree of the file. The result of this may lead to an | ||
| 1256 | * infinite loop in xfssyncd when the file gets flushed to disk and | ||
| 1257 | * all delayed extents need to be actually allocated. To get around | ||
| 1258 | * this, we explicitly set aside a few blocks which will not be | ||
| 1259 | * reserved in delayed allocation. Considering the minimum number of | ||
| 1260 | * needed freelist blocks is 4 fsbs, a potential split of file's bmap | ||
| 1261 | * btree requires 1 fsb, so we set the number of set-aside blocks to 8. | ||
| 1262 | */ | ||
| 1263 | #define SET_ASIDE_BLOCKS 8 | ||
| 1264 | 1246 | ||
| 1265 | /* | 1247 | /* |
| 1266 | * xfs_mod_incore_sb_unlocked() is a utility routine common used to apply | 1248 | * xfs_mod_incore_sb_unlocked() is a utility routine common used to apply |
| @@ -1306,7 +1288,8 @@ xfs_mod_incore_sb_unlocked(xfs_mount_t *mp, xfs_sb_field_t field, | |||
| 1306 | return 0; | 1288 | return 0; |
| 1307 | case XFS_SBS_FDBLOCKS: | 1289 | case XFS_SBS_FDBLOCKS: |
| 1308 | 1290 | ||
| 1309 | lcounter = (long long)mp->m_sb.sb_fdblocks - SET_ASIDE_BLOCKS; | 1291 | lcounter = (long long) |
| 1292 | mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); | ||
| 1310 | res_used = (long long)(mp->m_resblks - mp->m_resblks_avail); | 1293 | res_used = (long long)(mp->m_resblks - mp->m_resblks_avail); |
| 1311 | 1294 | ||
| 1312 | if (delta > 0) { /* Putting blocks back */ | 1295 | if (delta > 0) { /* Putting blocks back */ |
| @@ -1340,7 +1323,7 @@ xfs_mod_incore_sb_unlocked(xfs_mount_t *mp, xfs_sb_field_t field, | |||
| 1340 | } | 1323 | } |
| 1341 | } | 1324 | } |
| 1342 | 1325 | ||
| 1343 | mp->m_sb.sb_fdblocks = lcounter + SET_ASIDE_BLOCKS; | 1326 | mp->m_sb.sb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp); |
| 1344 | return 0; | 1327 | return 0; |
| 1345 | case XFS_SBS_FREXTENTS: | 1328 | case XFS_SBS_FREXTENTS: |
| 1346 | lcounter = (long long)mp->m_sb.sb_frextents; | 1329 | lcounter = (long long)mp->m_sb.sb_frextents; |
| @@ -2021,7 +2004,8 @@ xfs_icsb_sync_counters_lazy( | |||
| 2021 | * when we get near ENOSPC. | 2004 | * when we get near ENOSPC. |
| 2022 | */ | 2005 | */ |
| 2023 | #define XFS_ICSB_INO_CNTR_REENABLE 64 | 2006 | #define XFS_ICSB_INO_CNTR_REENABLE 64 |
| 2024 | #define XFS_ICSB_FDBLK_CNTR_REENABLE 512 | 2007 | #define XFS_ICSB_FDBLK_CNTR_REENABLE(mp) \ |
| 2008 | (512 + XFS_ALLOC_SET_ASIDE(mp)) | ||
| 2025 | STATIC void | 2009 | STATIC void |
| 2026 | xfs_icsb_balance_counter( | 2010 | xfs_icsb_balance_counter( |
| 2027 | xfs_mount_t *mp, | 2011 | xfs_mount_t *mp, |
| @@ -2055,7 +2039,7 @@ xfs_icsb_balance_counter( | |||
| 2055 | case XFS_SBS_FDBLOCKS: | 2039 | case XFS_SBS_FDBLOCKS: |
| 2056 | count = mp->m_sb.sb_fdblocks; | 2040 | count = mp->m_sb.sb_fdblocks; |
| 2057 | resid = do_div(count, weight); | 2041 | resid = do_div(count, weight); |
| 2058 | if (count < XFS_ICSB_FDBLK_CNTR_REENABLE) | 2042 | if (count < XFS_ICSB_FDBLK_CNTR_REENABLE(mp)) |
| 2059 | goto out; | 2043 | goto out; |
| 2060 | break; | 2044 | break; |
| 2061 | default: | 2045 | default: |
| @@ -2110,11 +2094,11 @@ again: | |||
| 2110 | case XFS_SBS_FDBLOCKS: | 2094 | case XFS_SBS_FDBLOCKS: |
| 2111 | BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0); | 2095 | BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0); |
| 2112 | 2096 | ||
| 2113 | lcounter = icsbp->icsb_fdblocks; | 2097 | lcounter = icsbp->icsb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); |
| 2114 | lcounter += delta; | 2098 | lcounter += delta; |
| 2115 | if (unlikely(lcounter < 0)) | 2099 | if (unlikely(lcounter < 0)) |
| 2116 | goto slow_path; | 2100 | goto slow_path; |
| 2117 | icsbp->icsb_fdblocks = lcounter; | 2101 | icsbp->icsb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp); |
| 2118 | break; | 2102 | break; |
| 2119 | default: | 2103 | default: |
| 2120 | BUG(); | 2104 | BUG(); |
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c index b427d220a169..a34796e57afb 100644 --- a/fs/xfs/xfs_vfsops.c +++ b/fs/xfs/xfs_vfsops.c | |||
| @@ -811,7 +811,8 @@ xfs_statvfs( | |||
| 811 | statp->f_bsize = sbp->sb_blocksize; | 811 | statp->f_bsize = sbp->sb_blocksize; |
| 812 | lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0; | 812 | lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0; |
| 813 | statp->f_blocks = sbp->sb_dblocks - lsize; | 813 | statp->f_blocks = sbp->sb_dblocks - lsize; |
| 814 | statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks; | 814 | statp->f_bfree = statp->f_bavail = |
| 815 | sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); | ||
| 815 | fakeinos = statp->f_bfree << sbp->sb_inopblog; | 816 | fakeinos = statp->f_bfree << sbp->sb_inopblog; |
| 816 | #if XFS_BIG_INUMS | 817 | #if XFS_BIG_INUMS |
| 817 | fakeinos += mp->m_inoadd; | 818 | fakeinos += mp->m_inoadd; |
diff --git a/include/asm-sh64/bug.h b/include/asm-sh64/bug.h index 81f722efeb63..f3a9c9248ef4 100644 --- a/include/asm-sh64/bug.h +++ b/include/asm-sh64/bug.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #ifndef __ASM_SH64_BUG_H | 1 | #ifndef __ASM_SH64_BUG_H |
| 2 | #define __ASM_SH64_BUG_H | 2 | #define __ASM_SH64_BUG_H |
| 3 | 3 | ||
| 4 | 4 | #ifdef CONFIG_BUG | |
| 5 | /* | 5 | /* |
| 6 | * Tell the user there is some problem, then force a segfault (in process | 6 | * Tell the user there is some problem, then force a segfault (in process |
| 7 | * context) or a panic (interrupt context). | 7 | * context) or a panic (interrupt context). |
| @@ -11,17 +11,9 @@ | |||
| 11 | *(volatile int *)0 = 0; \ | 11 | *(volatile int *)0 = 0; \ |
| 12 | } while (0) | 12 | } while (0) |
| 13 | 13 | ||
| 14 | #define BUG_ON(condition) do { \ | 14 | #define HAVE_ARCH_BUG |
| 15 | if (unlikely((condition)!=0)) \ | 15 | #endif |
| 16 | BUG(); \ | ||
| 17 | } while(0) | ||
| 18 | 16 | ||
| 19 | #define WARN_ON(condition) do { \ | 17 | #include <asm-generic/bug.h> |
| 20 | if (unlikely((condition)!=0)) { \ | ||
| 21 | printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ | ||
| 22 | dump_stack(); \ | ||
| 23 | } \ | ||
| 24 | } while (0) | ||
| 25 | 18 | ||
| 26 | #endif /* __ASM_SH64_BUG_H */ | 19 | #endif /* __ASM_SH64_BUG_H */ |
| 27 | |||
diff --git a/include/asm-sh64/byteorder.h b/include/asm-sh64/byteorder.h index f602ebe334eb..7419d78820ee 100644 --- a/include/asm-sh64/byteorder.h +++ b/include/asm-sh64/byteorder.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <asm/types.h> | 15 | #include <asm/types.h> |
| 16 | 16 | ||
| 17 | static __inline__ __const__ __u32 ___arch__swab32(__u32 x) | 17 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) |
| 18 | { | 18 | { |
| 19 | __asm__("byterev %0, %0\n\t" | 19 | __asm__("byterev %0, %0\n\t" |
| 20 | "shari %0, 32, %0" | 20 | "shari %0, 32, %0" |
| @@ -23,7 +23,7 @@ static __inline__ __const__ __u32 ___arch__swab32(__u32 x) | |||
| 23 | return x; | 23 | return x; |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | static __inline__ __const__ __u16 ___arch__swab16(__u16 x) | 26 | static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) |
| 27 | { | 27 | { |
| 28 | __asm__("byterev %0, %0\n\t" | 28 | __asm__("byterev %0, %0\n\t" |
| 29 | "shari %0, 48, %0" | 29 | "shari %0, 48, %0" |
diff --git a/include/asm-sh64/dma-mapping.h b/include/asm-sh64/dma-mapping.h index a74a49e47922..68e27a8fca31 100644 --- a/include/asm-sh64/dma-mapping.h +++ b/include/asm-sh64/dma-mapping.h | |||
| @@ -126,22 +126,30 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg, | |||
| 126 | static inline void dma_sync_single_for_cpu(struct device *dev, | 126 | static inline void dma_sync_single_for_cpu(struct device *dev, |
| 127 | dma_addr_t dma_handle, size_t size, | 127 | dma_addr_t dma_handle, size_t size, |
| 128 | enum dma_data_direction dir) | 128 | enum dma_data_direction dir) |
| 129 | __attribute__ ((alias("dma_sync_single"))); | 129 | { |
| 130 | dma_sync_single(dev, dma_handle, size, dir); | ||
| 131 | } | ||
| 130 | 132 | ||
| 131 | static inline void dma_sync_single_for_device(struct device *dev, | 133 | static inline void dma_sync_single_for_device(struct device *dev, |
| 132 | dma_addr_t dma_handle, size_t size, | 134 | dma_addr_t dma_handle, size_t size, |
| 133 | enum dma_data_direction dir) | 135 | enum dma_data_direction dir) |
| 134 | __attribute__ ((alias("dma_sync_single"))); | 136 | { |
| 137 | dma_sync_single(dev, dma_handle, size, dir); | ||
| 138 | } | ||
| 135 | 139 | ||
| 136 | static inline void dma_sync_sg_for_cpu(struct device *dev, | 140 | static inline void dma_sync_sg_for_cpu(struct device *dev, |
| 137 | struct scatterlist *sg, int nelems, | 141 | struct scatterlist *sg, int nelems, |
| 138 | enum dma_data_direction dir) | 142 | enum dma_data_direction dir) |
| 139 | __attribute__ ((alias("dma_sync_sg"))); | 143 | { |
| 144 | dma_sync_sg(dev, sg, nelems, dir); | ||
| 145 | } | ||
| 140 | 146 | ||
| 141 | static inline void dma_sync_sg_for_device(struct device *dev, | 147 | static inline void dma_sync_sg_for_device(struct device *dev, |
| 142 | struct scatterlist *sg, int nelems, | 148 | struct scatterlist *sg, int nelems, |
| 143 | enum dma_data_direction dir) | 149 | enum dma_data_direction dir) |
| 144 | __attribute__ ((alias("dma_sync_sg"))); | 150 | { |
| 151 | dma_sync_sg(dev, sg, nelems, dir); | ||
| 152 | } | ||
| 145 | 153 | ||
| 146 | static inline int dma_get_cache_alignment(void) | 154 | static inline int dma_get_cache_alignment(void) |
| 147 | { | 155 | { |
diff --git a/include/asm-sh64/io.h b/include/asm-sh64/io.h index dee4f77929a4..252fedbb6621 100644 --- a/include/asm-sh64/io.h +++ b/include/asm-sh64/io.h | |||
| @@ -123,6 +123,13 @@ void insw(unsigned long port, void *addr, unsigned long count); | |||
| 123 | void outsl(unsigned long port, const void *addr, unsigned long count); | 123 | void outsl(unsigned long port, const void *addr, unsigned long count); |
| 124 | void insl(unsigned long port, void *addr, unsigned long count); | 124 | void insl(unsigned long port, void *addr, unsigned long count); |
| 125 | 125 | ||
| 126 | #define __raw_readb readb | ||
| 127 | #define __raw_readw readw | ||
| 128 | #define __raw_readl readl | ||
| 129 | #define __raw_writeb writeb | ||
| 130 | #define __raw_writew writew | ||
| 131 | #define __raw_writel writel | ||
| 132 | |||
| 126 | void memcpy_toio(void __iomem *to, const void *from, long count); | 133 | void memcpy_toio(void __iomem *to, const void *from, long count); |
| 127 | void memcpy_fromio(void *to, void __iomem *from, long count); | 134 | void memcpy_fromio(void *to, void __iomem *from, long count); |
| 128 | 135 | ||
diff --git a/include/asm-sh64/ptrace.h b/include/asm-sh64/ptrace.h index 56190f521587..a6d4da519db6 100644 --- a/include/asm-sh64/ptrace.h +++ b/include/asm-sh64/ptrace.h | |||
| @@ -28,7 +28,7 @@ struct pt_regs { | |||
| 28 | #ifdef __KERNEL__ | 28 | #ifdef __KERNEL__ |
| 29 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) | 29 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) |
| 30 | #define instruction_pointer(regs) ((regs)->pc) | 30 | #define instruction_pointer(regs) ((regs)->pc) |
| 31 | #define profile_pc(regs) instruction_pointer(regs) | 31 | #define profile_pc(regs) ((unsigned long)instruction_pointer(regs)) |
| 32 | extern void show_regs(struct pt_regs *); | 32 | extern void show_regs(struct pt_regs *); |
| 33 | #endif | 33 | #endif |
| 34 | 34 | ||
diff --git a/include/asm-sh64/system.h b/include/asm-sh64/system.h index 87ef6f1ad5a4..b1598c26fcb0 100644 --- a/include/asm-sh64/system.h +++ b/include/asm-sh64/system.h | |||
| @@ -64,7 +64,7 @@ extern void __xchg_called_with_bad_pointer(void); | |||
| 64 | #define smp_read_barrier_depends() do { } while (0) | 64 | #define smp_read_barrier_depends() do { } while (0) |
| 65 | #endif /* CONFIG_SMP */ | 65 | #endif /* CONFIG_SMP */ |
| 66 | 66 | ||
| 67 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) | 67 | #define set_rmb(var, value) do { (void)xchg(&var, value); } while (0) |
| 68 | #define set_mb(var, value) set_rmb(var, value) | 68 | #define set_mb(var, value) set_rmb(var, value) |
| 69 | 69 | ||
| 70 | /* Interrupt Control */ | 70 | /* Interrupt Control */ |
diff --git a/include/asm-sh64/uaccess.h b/include/asm-sh64/uaccess.h index f4936d8fa617..644c67b65f94 100644 --- a/include/asm-sh64/uaccess.h +++ b/include/asm-sh64/uaccess.h | |||
| @@ -128,25 +128,20 @@ do { \ | |||
| 128 | 128 | ||
| 129 | #define __get_user_nocheck(x,ptr,size) \ | 129 | #define __get_user_nocheck(x,ptr,size) \ |
| 130 | ({ \ | 130 | ({ \ |
| 131 | long __gu_addr = (long)(ptr); \ | 131 | long __gu_err, __gu_val; \ |
| 132 | long __gu_err; \ | 132 | __get_user_size((void *)&__gu_val, (long)(ptr), \ |
| 133 | __typeof(*(ptr)) __gu_val; \ | 133 | (size), __gu_err); \ |
| 134 | __asm__ ("":"=r" (__gu_val)); \ | 134 | (x) = (__typeof__(*(ptr)))__gu_val; \ |
| 135 | __asm__ ("":"=r" (__gu_err)); \ | ||
| 136 | __get_user_size((void *)&__gu_val, __gu_addr, (size), __gu_err); \ | ||
| 137 | (x) = (__typeof__(*(ptr))) __gu_val; \ | ||
| 138 | __gu_err; \ | 135 | __gu_err; \ |
| 139 | }) | 136 | }) |
| 140 | 137 | ||
| 141 | #define __get_user_check(x,ptr,size) \ | 138 | #define __get_user_check(x,ptr,size) \ |
| 142 | ({ \ | 139 | ({ \ |
| 143 | long __gu_addr = (long)(ptr); \ | 140 | long __gu_addr = (long)(ptr); \ |
| 144 | long __gu_err = -EFAULT; \ | 141 | long __gu_err = -EFAULT, __gu_val; \ |
| 145 | __typeof(*(ptr)) __gu_val; \ | ||
| 146 | __asm__ ("":"=r" (__gu_val)); \ | ||
| 147 | __asm__ ("":"=r" (__gu_err)); \ | ||
| 148 | if (__access_ok(__gu_addr, (size))) \ | 142 | if (__access_ok(__gu_addr, (size))) \ |
| 149 | __get_user_size((void *)&__gu_val, __gu_addr, (size), __gu_err); \ | 143 | __get_user_size((void *)&__gu_val, __gu_addr, \ |
| 144 | (size), __gu_err); \ | ||
| 150 | (x) = (__typeof__(*(ptr))) __gu_val; \ | 145 | (x) = (__typeof__(*(ptr))) __gu_val; \ |
| 151 | __gu_err; \ | 146 | __gu_err; \ |
| 152 | }) | 147 | }) |
diff --git a/include/linux/videodev.h b/include/linux/videodev.h index 518c7a32175e..8dba97a291f6 100644 --- a/include/linux/videodev.h +++ b/include/linux/videodev.h | |||
| @@ -14,8 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <linux/videodev2.h> | 15 | #include <linux/videodev2.h> |
| 16 | 16 | ||
| 17 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | 17 | #if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) |
| 18 | #define HAVE_V4L1 1 | ||
| 19 | 18 | ||
| 20 | struct video_capability | 19 | struct video_capability |
| 21 | { | 20 | { |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index b7146956a929..e3715d774197 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -22,8 +22,6 @@ | |||
| 22 | #endif | 22 | #endif |
| 23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
| 24 | 24 | ||
| 25 | #define HAVE_V4L2 1 | ||
| 26 | |||
| 27 | /* | 25 | /* |
| 28 | * Common stuff for both V4L1 and V4L2 | 26 | * Common stuff for both V4L1 and V4L2 |
| 29 | * Moved from videodev.h | 27 | * Moved from videodev.h |
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index 600d61d7d2ab..810462f8a374 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
| @@ -194,7 +194,7 @@ struct video_device | |||
| 194 | 194 | ||
| 195 | 195 | ||
| 196 | int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i); | 196 | int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i); |
| 197 | #ifdef HAVE_V4L1 | 197 | #ifdef CONFIG_VIDEO_V4L1_COMPAT |
| 198 | /* buffer type is struct vidio_mbuf * */ | 198 | /* buffer type is struct vidio_mbuf * */ |
| 199 | int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p); | 199 | int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p); |
| 200 | #endif | 200 | #endif |
| @@ -335,7 +335,7 @@ extern int video_usercopy(struct inode *inode, struct file *file, | |||
| 335 | unsigned int cmd, void *arg)); | 335 | unsigned int cmd, void *arg)); |
| 336 | 336 | ||
| 337 | 337 | ||
| 338 | #ifdef HAVE_V4L1 | 338 | #ifdef CONFIG_VIDEO_V4L1_COMPAT |
| 339 | #include <linux/mm.h> | 339 | #include <linux/mm.h> |
| 340 | 340 | ||
| 341 | extern struct video_device* video_devdata(struct file*); | 341 | extern struct video_device* video_devdata(struct file*); |
| @@ -357,6 +357,8 @@ video_device_remove_file(struct video_device *vfd, | |||
| 357 | class_device_remove_file(&vfd->class_dev, attr); | 357 | class_device_remove_file(&vfd->class_dev, attr); |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | #endif /* CONFIG_VIDEO_V4L1_COMPAT */ | ||
| 361 | |||
| 360 | #ifdef OBSOLETE_OWNER /* to be removed soon */ | 362 | #ifdef OBSOLETE_OWNER /* to be removed soon */ |
| 361 | /* helper functions to access driver private data. */ | 363 | /* helper functions to access driver private data. */ |
| 362 | static inline void *video_get_drvdata(struct video_device *dev) | 364 | static inline void *video_get_drvdata(struct video_device *dev) |
| @@ -372,6 +374,5 @@ static inline void video_set_drvdata(struct video_device *dev, void *data) | |||
| 372 | 374 | ||
| 373 | extern int video_exclusive_open(struct inode *inode, struct file *file); | 375 | extern int video_exclusive_open(struct inode *inode, struct file *file); |
| 374 | extern int video_exclusive_release(struct inode *inode, struct file *file); | 376 | extern int video_exclusive_release(struct inode *inode, struct file *file); |
| 375 | #endif /* HAVE_V4L1 */ | ||
| 376 | 377 | ||
| 377 | #endif /* _V4L2_DEV_H */ | 378 | #endif /* _V4L2_DEV_H */ |
diff --git a/lib/Kconfig b/lib/Kconfig index f6299342b882..734ce95a93d1 100644 --- a/lib/Kconfig +++ b/lib/Kconfig | |||
| @@ -38,6 +38,11 @@ config LIBCRC32C | |||
| 38 | require M here. See Castagnoli93. | 38 | require M here. See Castagnoli93. |
| 39 | Module will be libcrc32c. | 39 | Module will be libcrc32c. |
| 40 | 40 | ||
| 41 | config AUDIT_GENERIC | ||
| 42 | bool | ||
| 43 | depends on AUDIT && !AUDIT_ARCH | ||
| 44 | default y | ||
| 45 | |||
| 41 | # | 46 | # |
| 42 | # compression support is select'ed if needed | 47 | # compression support is select'ed if needed |
| 43 | # | 48 | # |
diff --git a/lib/Makefile b/lib/Makefile index be9719ae82d0..ef1d37afbbb6 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
| @@ -49,6 +49,7 @@ obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o | |||
| 49 | obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o | 49 | obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o |
| 50 | obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o | 50 | obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o |
| 51 | obj-$(CONFIG_SMP) += percpu_counter.o | 51 | obj-$(CONFIG_SMP) += percpu_counter.o |
| 52 | obj-$(CONFIG_AUDIT_GENERIC) += audit.o | ||
| 52 | 53 | ||
| 53 | obj-$(CONFIG_SWIOTLB) += swiotlb.o | 54 | obj-$(CONFIG_SWIOTLB) += swiotlb.o |
| 54 | 55 | ||
diff --git a/arch/i386/kernel/audit.c b/lib/audit.c index 3b97cff41549..8c21625ef938 100644 --- a/arch/i386/kernel/audit.c +++ b/lib/audit.c | |||
| @@ -30,8 +30,10 @@ int audit_classify_syscall(int abi, unsigned syscall) | |||
| 30 | return 2; | 30 | return 2; |
| 31 | case __NR_openat: | 31 | case __NR_openat: |
| 32 | return 3; | 32 | return 3; |
| 33 | #ifdef __NR_socketcall | ||
| 33 | case __NR_socketcall: | 34 | case __NR_socketcall: |
| 34 | return 4; | 35 | return 4; |
| 36 | #endif | ||
| 35 | case __NR_execve: | 37 | case __NR_execve: |
| 36 | return 5; | 38 | return 5; |
| 37 | default: | 39 | default: |
