提交 eff68d45 编写于 作者: J Jeff Garzik

Merge branch 'master' into upstream-fixes

VERSION = 2 VERSION = 2
PATCHLEVEL = 6 PATCHLEVEL = 6
SUBLEVEL = 18 SUBLEVEL = 18
EXTRAVERSION = -rc6 EXTRAVERSION = -rc7
NAME=Crazed Snow-Weasel NAME=Crazed Snow-Weasel
# *DOCUMENTATION* # *DOCUMENTATION*
......
...@@ -39,7 +39,6 @@ obj-$(CONFIG_VM86) += vm86.o ...@@ -39,7 +39,6 @@ obj-$(CONFIG_VM86) += vm86.o
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
obj-$(CONFIG_HPET_TIMER) += hpet.o obj-$(CONFIG_HPET_TIMER) += hpet.o
obj-$(CONFIG_K8_NB) += k8.o obj-$(CONFIG_K8_NB) += k8.o
obj-$(CONFIG_AUDIT) += audit.o
EXTRA_AFLAGS := -traditional EXTRA_AFLAGS := -traditional
......
...@@ -75,6 +75,10 @@ config DMA_IS_NORMAL ...@@ -75,6 +75,10 @@ config DMA_IS_NORMAL
depends on IA64_SGI_SN2 depends on IA64_SGI_SN2
default y default y
config AUDIT_ARCH
bool
default y
choice choice
prompt "System type" prompt "System type"
default IA64_GENERIC default IA64_GENERIC
......
...@@ -95,6 +95,10 @@ config GENERIC_TBSYNC ...@@ -95,6 +95,10 @@ config GENERIC_TBSYNC
default y if PPC32 && SMP default y if PPC32 && SMP
default n default n
config AUDIT_ARCH
bool
default y
config DEFAULT_UIMAGE config DEFAULT_UIMAGE
bool bool
help help
......
...@@ -118,6 +118,10 @@ config SYSVIPC_COMPAT ...@@ -118,6 +118,10 @@ config SYSVIPC_COMPAT
depends on COMPAT && SYSVIPC depends on COMPAT && SYSVIPC
default y default y
config AUDIT_ARCH
bool
default y
comment "Code generation options" comment "Code generation options"
choice choice
......
...@@ -26,7 +26,6 @@ LDFLAGS += -EB -mshelf32_linux ...@@ -26,7 +26,6 @@ LDFLAGS += -EB -mshelf32_linux
endif endif
# No requirements for endianess support from AFLAGS, 'as' always run through gcc # No requirements for endianess support from AFLAGS, 'as' always run through gcc
AFLAGS += -m5 -isa=sh64 -traditional
CFLAGS += $(cpu-y) CFLAGS += $(cpu-y)
LDFLAGS_vmlinux += --defsym phys_stext=_stext-$(CONFIG_CACHED_MEMORY_OFFSET) \ LDFLAGS_vmlinux += --defsym phys_stext=_stext-$(CONFIG_CACHED_MEMORY_OFFSET) \
......
...@@ -355,6 +355,9 @@ void machine_power_off(void) ...@@ -355,6 +355,9 @@ void machine_power_off(void)
enter_deep_standby(); enter_deep_standby();
} }
void (*pm_power_off)(void) = machine_power_off;
EXPORT_SYMBOL(pm_power_off);
void show_regs(struct pt_regs * regs) void show_regs(struct pt_regs * regs)
{ {
unsigned long long ah, al, bh, bl, ch, cl; unsigned long long ah, al, bh, bl, ch, cl;
......
...@@ -112,8 +112,10 @@ struct resource io_resources[] = { ...@@ -112,8 +112,10 @@ struct resource io_resources[] = {
}; };
struct resource kram_resources[] = { struct resource kram_resources[] = {
{ "Kernel code", 0, 0 }, /* These must be last in the array */ /* These must be last in the array */
{ "Kernel data", 0, 0 } /* These must be last in the array */ { .name = "Kernel code", .start = 0, .end = 0 },
/* These must be last in the array */
{ .name = "Kernel data", .start = 0, .end = 0 }
}; };
struct resource xram_resources[] = { struct resource xram_resources[] = {
......
...@@ -449,7 +449,9 @@ ioremap_proc_info(char *buf, char **start, off_t fpos, int length, int *eof, ...@@ -449,7 +449,9 @@ ioremap_proc_info(char *buf, char **start, off_t fpos, int length, int *eof,
if (p + 32 >= e) /* Better than nothing */ if (p + 32 >= e) /* Better than nothing */
break; break;
if ((nm = r->name) == 0) nm = "???"; if ((nm = r->name) == 0) nm = "???";
p += sprintf(p, "%08lx-%08lx: %s\n", r->start, r->end, nm); p += sprintf(p, "%08lx-%08lx: %s\n",
(unsigned long)r->start,
(unsigned long)r->end, nm);
} }
return p-buf; return p-buf;
......
...@@ -34,6 +34,10 @@ config ARCH_MAY_HAVE_PC_FDC ...@@ -34,6 +34,10 @@ config ARCH_MAY_HAVE_PC_FDC
bool bool
default y default y
config AUDIT_ARCH
bool
default y
choice choice
prompt "Kernel page size" prompt "Kernel page size"
default SPARC64_PAGE_SIZE_8KB default SPARC64_PAGE_SIZE_8KB
......
...@@ -25,6 +25,9 @@ obj-$(CONFIG_MODULES) += module.o ...@@ -25,6 +25,9 @@ obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o
obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o
obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_KPROBES) += kprobes.o
obj-$(CONFIG_AUDIT) += audit.o
obj-$(CONFIG_AUDIT)$(CONFIG_SPARC32_COMPAT) += compat_audit.o
obj-y += $(obj-yy)
ifdef CONFIG_SUNOS_EMUL ifdef CONFIG_SUNOS_EMUL
obj-y += sys_sunos32.o sunos_ioctl32.o obj-y += sys_sunos32.o sunos_ioctl32.o
......
#include <linux/init.h>
#include <linux/types.h>
#include <linux/audit.h>
#include <asm/unistd.h>
static unsigned dir_class[] = {
#include <asm-generic/audit_dir_write.h>
~0U
};
static unsigned read_class[] = {
#include <asm-generic/audit_read.h>
~0U
};
static unsigned write_class[] = {
#include <asm-generic/audit_write.h>
~0U
};
static unsigned chattr_class[] = {
#include <asm-generic/audit_change_attr.h>
~0U
};
int audit_classify_syscall(int abi, unsigned syscall)
{
#ifdef CONFIG_SPARC32_COMPAT
extern int sparc32_classify_syscall(unsigned);
if (abi == AUDIT_ARCH_SPARC)
return sparc32_classify_syscall(syscall);
#endif
switch(syscall) {
case __NR_open:
return 2;
case __NR_openat:
return 3;
case __NR_socketcall:
return 4;
case __NR_execve:
return 5;
default:
return 0;
}
}
static int __init audit_classes_init(void)
{
#ifdef CONFIG_SPARC32_COMPAT
extern __u32 sparc32_dir_class[];
extern __u32 sparc32_write_class[];
extern __u32 sparc32_read_class[];
extern __u32 sparc32_chattr_class[];
audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class);
#endif
audit_register_class(AUDIT_CLASS_WRITE, write_class);
audit_register_class(AUDIT_CLASS_READ, read_class);
audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
return 0;
}
__initcall(audit_classes_init);
#include <asm-sparc/unistd.h>
unsigned sparc32_dir_class[] = {
#include <asm-generic/audit_dir_write.h>
~0U
};
unsigned sparc32_chattr_class[] = {
#include <asm-generic/audit_change_attr.h>
~0U
};
unsigned sparc32_write_class[] = {
#include <asm-generic/audit_write.h>
~0U
};
unsigned sparc32_read_class[] = {
#include <asm-generic/audit_read.h>
~0U
};
int sparc32_classify_syscall(unsigned syscall)
{
switch(syscall) {
case __NR_open:
return 2;
case __NR_openat:
return 3;
case __NR_socketcall:
return 4;
case __NR_execve:
return 5;
default:
return 1;
}
}
...@@ -85,6 +85,10 @@ config DMI ...@@ -85,6 +85,10 @@ config DMI
bool bool
default y default y
config AUDIT_ARCH
bool
default y
source "init/Kconfig" source "init/Kconfig"
......
...@@ -53,7 +53,7 @@ config VIDEO_V4L1_COMPAT ...@@ -53,7 +53,7 @@ config VIDEO_V4L1_COMPAT
If you are unsure as to whether this is required, answer Y. If you are unsure as to whether this is required, answer Y.
config VIDEO_V4L2 config VIDEO_V4L2
tristate bool
default y default y
source "drivers/media/video/Kconfig" source "drivers/media/video/Kconfig"
......
...@@ -1190,6 +1190,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int ...@@ -1190,6 +1190,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
} }
return err; return err;
} }
#ifdef CONFIG_VIDEO_V4L1_COMPAT
case VIDIOCGMBUF: case VIDIOCGMBUF:
{ {
struct video_mbuf *mbuf = arg; struct video_mbuf *mbuf = arg;
...@@ -1218,6 +1219,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int ...@@ -1218,6 +1219,7 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
mutex_unlock(&q->lock); mutex_unlock(&q->lock);
return 0; return 0;
} }
#endif
default: default:
return v4l_compat_translate_ioctl(inode,file,cmd,arg, return v4l_compat_translate_ioctl(inode,file,cmd,arg,
saa7146_video_do_ioctl); saa7146_video_do_ioctl);
......
config DVB_B2C2_FLEXCOP config DVB_B2C2_FLEXCOP
tristate "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters" tristate "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
depends on DVB_CORE && I2C depends on DVB_CORE && I2C
select DVB_PLL
select DVB_STV0299 select DVB_STV0299
select DVB_MT352 select DVB_MT352
select DVB_MT312 select DVB_MT312
......
config DVB_BT8XX config DVB_BT8XX
tristate "BT8xx based PCI cards" tristate "BT8xx based PCI cards"
depends on DVB_CORE && PCI && I2C && VIDEO_BT848 depends on DVB_CORE && PCI && I2C && VIDEO_BT848
select DVB_PLL
select DVB_MT352 select DVB_MT352
select DVB_SP887X select DVB_SP887X
select DVB_NXT6000 select DVB_NXT6000
......
...@@ -2,6 +2,7 @@ config DVB_USB ...@@ -2,6 +2,7 @@ config DVB_USB
tristate "Support for various USB DVB devices" tristate "Support for various USB DVB devices"
depends on DVB_CORE && USB && I2C depends on DVB_CORE && USB && I2C
select FW_LOADER select FW_LOADER
select DVB_PLL
help help
By enabling this you will be able to choose the various supported By enabling this you will be able to choose the various supported
USB1.1 and USB2.0 DVB devices. USB1.1 and USB2.0 DVB devices.
......
...@@ -6,43 +6,43 @@ comment "DVB-S (satellite) frontends" ...@@ -6,43 +6,43 @@ comment "DVB-S (satellite) frontends"
config DVB_STV0299 config DVB_STV0299
tristate "ST STV0299 based" tristate "ST STV0299 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_CX24110 config DVB_CX24110
tristate "Conexant CX24110 based" tristate "Conexant CX24110 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_CX24123 config DVB_CX24123
tristate "Conexant CX24123 based" tristate "Conexant CX24123 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_TDA8083 config DVB_TDA8083
tristate "Philips TDA8083 based" tristate "Philips TDA8083 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_MT312 config DVB_MT312
tristate "Zarlink VP310/MT312 based" tristate "Zarlink VP310/MT312 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_VES1X93 config DVB_VES1X93
tristate "VLSI VES1893 or VES1993 based" tristate "VLSI VES1893 or VES1993 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_S5H1420 config DVB_S5H1420
tristate "Samsung S5H1420 based" tristate "Samsung S5H1420 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
...@@ -51,7 +51,7 @@ comment "DVB-T (terrestrial) frontends" ...@@ -51,7 +51,7 @@ comment "DVB-T (terrestrial) frontends"
config DVB_SP8870 config DVB_SP8870
tristate "Spase sp8870 based" tristate "Spase sp8870 based"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
...@@ -63,7 +63,7 @@ config DVB_SP8870 ...@@ -63,7 +63,7 @@ config DVB_SP8870
config DVB_SP887X config DVB_SP887X
tristate "Spase sp887x based" tristate "Spase sp887x based"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
...@@ -75,25 +75,25 @@ config DVB_SP887X ...@@ -75,25 +75,25 @@ config DVB_SP887X
config DVB_CX22700 config DVB_CX22700
tristate "Conexant CX22700 based" tristate "Conexant CX22700 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
config DVB_CX22702 config DVB_CX22702
tristate "Conexant cx22702 demodulator (OFDM)" tristate "Conexant cx22702 demodulator (OFDM)"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
config DVB_L64781 config DVB_L64781
tristate "LSI L64781" tristate "LSI L64781"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
config DVB_TDA1004X config DVB_TDA1004X
tristate "Philips TDA10045H/TDA10046H based" tristate "Philips TDA10045H/TDA10046H based"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
...@@ -106,32 +106,32 @@ config DVB_TDA1004X ...@@ -106,32 +106,32 @@ config DVB_TDA1004X
config DVB_NXT6000 config DVB_NXT6000
tristate "NxtWave Communications NXT6000 based" tristate "NxtWave Communications NXT6000 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
config DVB_MT352 config DVB_MT352
tristate "Zarlink MT352 based" tristate "Zarlink MT352 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
config DVB_ZL10353 config DVB_ZL10353
tristate "Zarlink ZL10353 based" tristate "Zarlink ZL10353 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Say Y when you want to support this frontend. A DVB-T tuner module. Say Y when you want to support this frontend.
config DVB_DIB3000MB config DVB_DIB3000MB
tristate "DiBcom 3000M-B" tristate "DiBcom 3000M-B"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Designed for mobile usage. Say Y when you want A DVB-T tuner module. Designed for mobile usage. Say Y when you want
to support this frontend. to support this frontend.
config DVB_DIB3000MC config DVB_DIB3000MC
tristate "DiBcom 3000P/M-C" tristate "DiBcom 3000P/M-C"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-T tuner module. Designed for mobile usage. Say Y when you want A DVB-T tuner module. Designed for mobile usage. Say Y when you want
to support this frontend. to support this frontend.
...@@ -141,19 +141,19 @@ comment "DVB-C (cable) frontends" ...@@ -141,19 +141,19 @@ comment "DVB-C (cable) frontends"
config DVB_VES1820 config DVB_VES1820
tristate "VLSI VES1820 based" tristate "VLSI VES1820 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-C tuner module. Say Y when you want to support this frontend. A DVB-C tuner module. Say Y when you want to support this frontend.
config DVB_TDA10021 config DVB_TDA10021
tristate "Philips TDA10021 based" tristate "Philips TDA10021 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-C tuner module. Say Y when you want to support this frontend. A DVB-C tuner module. Say Y when you want to support this frontend.
config DVB_STV0297 config DVB_STV0297
tristate "ST STV0297 based" tristate "ST STV0297 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
A DVB-C tuner module. Say Y when you want to support this frontend. A DVB-C tuner module. Say Y when you want to support this frontend.
...@@ -162,7 +162,7 @@ comment "ATSC (North American/Korean Terrestrial/Cable DTV) frontends" ...@@ -162,7 +162,7 @@ comment "ATSC (North American/Korean Terrestrial/Cable DTV) frontends"
config DVB_NXT200X config DVB_NXT200X
tristate "NxtWave Communications NXT2002/NXT2004 based" tristate "NxtWave Communications NXT2002/NXT2004 based"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want
...@@ -176,7 +176,7 @@ config DVB_NXT200X ...@@ -176,7 +176,7 @@ config DVB_NXT200X
config DVB_OR51211 config DVB_OR51211
tristate "Oren OR51211 based" tristate "Oren OR51211 based"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
An ATSC 8VSB tuner module. Say Y when you want to support this frontend. An ATSC 8VSB tuner module. Say Y when you want to support this frontend.
...@@ -188,7 +188,7 @@ config DVB_OR51211 ...@@ -188,7 +188,7 @@ config DVB_OR51211
config DVB_OR51132 config DVB_OR51132
tristate "Oren OR51132 based" tristate "Oren OR51132 based"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want
...@@ -203,7 +203,7 @@ config DVB_OR51132 ...@@ -203,7 +203,7 @@ config DVB_OR51132
config DVB_BCM3510 config DVB_BCM3510
tristate "Broadcom BCM3510" tristate "Broadcom BCM3510"
depends on DVB_CORE depends on DVB_CORE && I2C
select FW_LOADER select FW_LOADER
help help
An ATSC 8VSB/16VSB and QAM64/256 tuner module. Say Y when you want to An ATSC 8VSB/16VSB and QAM64/256 tuner module. Say Y when you want to
...@@ -211,7 +211,7 @@ config DVB_BCM3510 ...@@ -211,7 +211,7 @@ config DVB_BCM3510
config DVB_LGDT330X config DVB_LGDT330X
tristate "LG Electronics LGDT3302/LGDT3303 based" tristate "LG Electronics LGDT3302/LGDT3303 based"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want An ATSC 8VSB and QAM64/256 tuner module. Say Y when you want
to support this frontend. to support this frontend.
...@@ -220,15 +220,19 @@ config DVB_LGDT330X ...@@ -220,15 +220,19 @@ config DVB_LGDT330X
comment "Miscellaneous devices" comment "Miscellaneous devices"
depends on DVB_CORE depends on DVB_CORE
config DVB_PLL
tristate
depends on DVB_CORE && I2C
config DVB_LNBP21 config DVB_LNBP21
tristate "LNBP21 SEC controller" tristate "LNBP21 SEC controller"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
An SEC control chip. An SEC control chip.
config DVB_ISL6421 config DVB_ISL6421
tristate "ISL6421 SEC controller" tristate "ISL6421 SEC controller"
depends on DVB_CORE depends on DVB_CORE && I2C
help help
An SEC control chip. An SEC control chip.
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/
obj-$(CONFIG_DVB_CORE) += dvb-pll.o obj-$(CONFIG_DVB_PLL) += dvb-pll.o
obj-$(CONFIG_DVB_STV0299) += stv0299.o obj-$(CONFIG_DVB_STV0299) += stv0299.o
obj-$(CONFIG_DVB_SP8870) += sp8870.o obj-$(CONFIG_DVB_SP8870) += sp8870.o
obj-$(CONFIG_DVB_CX22700) += cx22700.o obj-$(CONFIG_DVB_CX22700) += cx22700.o
......
...@@ -2,6 +2,7 @@ config DVB_PLUTO2 ...@@ -2,6 +2,7 @@ config DVB_PLUTO2
tristate "Pluto2 cards" tristate "Pluto2 cards"
depends on DVB_CORE && PCI && I2C depends on DVB_CORE && PCI && I2C
select I2C_ALGOBIT select I2C_ALGOBIT
select DVB_PLL
select DVB_TDA1004X select DVB_TDA1004X
help help
Support for PCI cards based on the Pluto2 FPGA like the Satelco Support for PCI cards based on the Pluto2 FPGA like the Satelco
......
...@@ -3,6 +3,7 @@ config DVB_AV7110 ...@@ -3,6 +3,7 @@ config DVB_AV7110
depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 depends on DVB_CORE && PCI && I2C && VIDEO_V4L1
select FW_LOADER select FW_LOADER
select VIDEO_SAA7146_VV select VIDEO_SAA7146_VV
select DVB_PLL
select DVB_VES1820 select DVB_VES1820
select DVB_VES1X93 select DVB_VES1X93
select DVB_STV0299 select DVB_STV0299
...@@ -61,6 +62,7 @@ config DVB_BUDGET ...@@ -61,6 +62,7 @@ config DVB_BUDGET
tristate "Budget cards" tristate "Budget cards"
depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 depends on DVB_CORE && PCI && I2C && VIDEO_V4L1
select VIDEO_SAA7146 select VIDEO_SAA7146
select DVB_PLL
select DVB_STV0299 select DVB_STV0299
select DVB_VES1X93 select DVB_VES1X93
select DVB_VES1820 select DVB_VES1820
...@@ -83,6 +85,7 @@ config DVB_BUDGET_CI ...@@ -83,6 +85,7 @@ config DVB_BUDGET_CI
tristate "Budget cards with onboard CI connector" tristate "Budget cards with onboard CI connector"
depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 depends on DVB_CORE && PCI && I2C && VIDEO_V4L1
select VIDEO_SAA7146 select VIDEO_SAA7146
select DVB_PLL
select DVB_STV0297 select DVB_STV0297
select DVB_STV0299 select DVB_STV0299
select DVB_TDA1004X select DVB_TDA1004X
...@@ -104,6 +107,7 @@ config DVB_BUDGET_AV ...@@ -104,6 +107,7 @@ config DVB_BUDGET_AV
tristate "Budget cards with analog video inputs" tristate "Budget cards with analog video inputs"
depends on DVB_CORE && PCI && I2C && VIDEO_V4L1 depends on DVB_CORE && PCI && I2C && VIDEO_V4L1
select VIDEO_SAA7146_VV select VIDEO_SAA7146_VV
select DVB_PLL
select DVB_STV0299 select DVB_STV0299
select DVB_TDA1004X select DVB_TDA1004X
select DVB_TDA10021 select DVB_TDA10021
...@@ -122,6 +126,7 @@ config DVB_BUDGET_PATCH ...@@ -122,6 +126,7 @@ config DVB_BUDGET_PATCH
tristate "AV7110 cards with Budget Patch" tristate "AV7110 cards with Budget Patch"
depends on DVB_CORE && DVB_BUDGET && VIDEO_V4L1 depends on DVB_CORE && DVB_BUDGET && VIDEO_V4L1
select DVB_AV7110 select DVB_AV7110
select DVB_PLL
select DVB_STV0299 select DVB_STV0299
select DVB_VES1X93 select DVB_VES1X93
select DVB_TDA8083 select DVB_TDA8083
......
config DVB_TTUSB_BUDGET config DVB_TTUSB_BUDGET
tristate "Technotrend/Hauppauge Nova-USB devices" tristate "Technotrend/Hauppauge Nova-USB devices"
depends on DVB_CORE && USB depends on DVB_CORE && USB && I2C
select DVB_PLL
select DVB_CX22700 select DVB_CX22700
select DVB_TDA1004X select DVB_TDA1004X
select DVB_VES1820 select DVB_VES1820
......
...@@ -260,7 +260,7 @@ source "drivers/media/video/saa7134/Kconfig" ...@@ -260,7 +260,7 @@ source "drivers/media/video/saa7134/Kconfig"
config VIDEO_MXB config VIDEO_MXB
tristate "Siemens-Nixdorf 'Multimedia eXtension Board'" tristate "Siemens-Nixdorf 'Multimedia eXtension Board'"
depends on PCI && VIDEO_V4L1 depends on PCI && VIDEO_V4L1 && I2C
select VIDEO_SAA7146_VV select VIDEO_SAA7146_VV
select VIDEO_TUNER select VIDEO_TUNER
---help--- ---help---
...@@ -272,7 +272,7 @@ config VIDEO_MXB ...@@ -272,7 +272,7 @@ config VIDEO_MXB
config VIDEO_DPC config VIDEO_DPC
tristate "Philips-Semiconductors 'dpc7146 demonstration board'" tristate "Philips-Semiconductors 'dpc7146 demonstration board'"
depends on PCI && VIDEO_V4L1 depends on PCI && VIDEO_V4L1 && I2C
select VIDEO_SAA7146_VV select VIDEO_SAA7146_VV
select VIDEO_V4L2 select VIDEO_V4L2
---help--- ---help---
...@@ -287,7 +287,7 @@ config VIDEO_DPC ...@@ -287,7 +287,7 @@ config VIDEO_DPC
config VIDEO_HEXIUM_ORION config VIDEO_HEXIUM_ORION
tristate "Hexium HV-PCI6 and Orion frame grabber" tristate "Hexium HV-PCI6 and Orion frame grabber"
depends on PCI && VIDEO_V4L1 depends on PCI && VIDEO_V4L1 && I2C
select VIDEO_SAA7146_VV select VIDEO_SAA7146_VV
select VIDEO_V4L2 select VIDEO_V4L2
---help--- ---help---
...@@ -299,7 +299,7 @@ config VIDEO_HEXIUM_ORION ...@@ -299,7 +299,7 @@ config VIDEO_HEXIUM_ORION
config VIDEO_HEXIUM_GEMINI config VIDEO_HEXIUM_GEMINI
tristate "Hexium Gemini frame grabber" tristate "Hexium Gemini frame grabber"
depends on PCI && VIDEO_V4L1 depends on PCI && VIDEO_V4L1 && I2C
select VIDEO_SAA7146_VV select VIDEO_SAA7146_VV
select VIDEO_V4L2 select VIDEO_V4L2
---help--- ---help---
......
...@@ -303,6 +303,7 @@ int bttv_input_init(struct bttv *btv) ...@@ -303,6 +303,7 @@ int bttv_input_init(struct bttv *btv)
ir->mask_keyup = 0x010000; ir->mask_keyup = 0x010000;
ir->polling = 50; // ms ir->polling = 50; // ms
break; break;
case BTTV_BOARD_PV_M4900:
case BTTV_BOARD_PV_BT878P_9B: case BTTV_BOARD_PV_BT878P_9B:
case BTTV_BOARD_PV_BT878P_PLUS: case BTTV_BOARD_PV_BT878P_PLUS:
ir_codes = ir_codes_pixelview; ir_codes = ir_codes_pixelview;
......
...@@ -51,6 +51,7 @@ config VIDEO_CX88_DVB ...@@ -51,6 +51,7 @@ config VIDEO_CX88_DVB
tristate "DVB/ATSC Support for cx2388x based TV cards" tristate "DVB/ATSC Support for cx2388x based TV cards"
depends on VIDEO_CX88 && DVB_CORE depends on VIDEO_CX88 && DVB_CORE
select VIDEO_BUF_DVB select VIDEO_BUF_DVB
select DVB_PLL
---help--- ---help---
This adds support for DVB/ATSC cards based on the This adds support for DVB/ATSC cards based on the
Conexant 2388x chip. Conexant 2388x chip.
......
...@@ -40,6 +40,7 @@ config VIDEO_SAA7134_DVB ...@@ -40,6 +40,7 @@ config VIDEO_SAA7134_DVB
depends on VIDEO_SAA7134 && DVB_CORE depends on VIDEO_SAA7134 && DVB_CORE
select VIDEO_BUF_DVB select VIDEO_BUF_DVB
select FW_LOADER select FW_LOADER
select DVB_PLL
---help--- ---help---
This adds support for DVB cards based on the This adds support for DVB cards based on the
Philips saa7134 chip. Philips saa7134 chip.
......
...@@ -926,11 +926,17 @@ static struct tuner_params tuner_lg_tdvs_h06xf_params[] = { ...@@ -926,11 +926,17 @@ static struct tuner_params tuner_lg_tdvs_h06xf_params[] = {
/* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */ /* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */
static struct tuner_range tuner_ymec_tvf66t5_b_dff_pal_ranges[] = {
{ 16 * 160.25 /*MHz*/, 0x8e, 0x01, },
{ 16 * 464.25 /*MHz*/, 0x8e, 0x02, },
{ 16 * 999.99 , 0x8e, 0x08, },
};
static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = { static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = {
{ {
.type = TUNER_PARAM_TYPE_PAL, .type = TUNER_PARAM_TYPE_PAL,
.ranges = tuner_tena_9533_di_pal_ranges, .ranges = tuner_ymec_tvf66t5_b_dff_pal_ranges,
.count = ARRAY_SIZE(tuner_tena_9533_di_pal_ranges), .count = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_pal_ranges),
}, },
}; };
......
...@@ -267,7 +267,7 @@ struct zoran_v4l_settings { ...@@ -267,7 +267,7 @@ struct zoran_v4l_settings {
}; };
/* whoops, this one is undeclared if !v4l2 */ /* whoops, this one is undeclared if !v4l2 */
#ifndef HAVE_V4L2 #ifndef CONFIG_VIDEO_V4L2
struct v4l2_jpegcompression { struct v4l2_jpegcompression {
int quality; int quality;
int APPn; int APPn;
......
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
#include "zoran_device.h" #include "zoran_device.h"
#include "zoran_card.h" #include "zoran_card.h"
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
/* we declare some card type definitions here, they mean /* we declare some card type definitions here, they mean
* the same as the v4l1 ZORAN_VID_TYPE above, except it's v4l2 */ * the same as the v4l1 ZORAN_VID_TYPE above, except it's v4l2 */
#define ZORAN_V4L2_VID_FLAGS ( \ #define ZORAN_V4L2_VID_FLAGS ( \
...@@ -103,7 +103,7 @@ const struct zoran_format zoran_formats[] = { ...@@ -103,7 +103,7 @@ const struct zoran_format zoran_formats[] = {
{ {
.name = "15-bit RGB", .name = "15-bit RGB",
.palette = VIDEO_PALETTE_RGB555, .palette = VIDEO_PALETTE_RGB555,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
#ifdef __LITTLE_ENDIAN #ifdef __LITTLE_ENDIAN
.fourcc = V4L2_PIX_FMT_RGB555, .fourcc = V4L2_PIX_FMT_RGB555,
#else #else
...@@ -117,7 +117,7 @@ const struct zoran_format zoran_formats[] = { ...@@ -117,7 +117,7 @@ const struct zoran_format zoran_formats[] = {
}, { }, {
.name = "16-bit RGB", .name = "16-bit RGB",
.palette = VIDEO_PALETTE_RGB565, .palette = VIDEO_PALETTE_RGB565,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
#ifdef __LITTLE_ENDIAN #ifdef __LITTLE_ENDIAN
.fourcc = V4L2_PIX_FMT_RGB565, .fourcc = V4L2_PIX_FMT_RGB565,
#else #else
...@@ -131,7 +131,7 @@ const struct zoran_format zoran_formats[] = { ...@@ -131,7 +131,7 @@ const struct zoran_format zoran_formats[] = {
}, { }, {
.name = "24-bit RGB", .name = "24-bit RGB",
.palette = VIDEO_PALETTE_RGB24, .palette = VIDEO_PALETTE_RGB24,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
#ifdef __LITTLE_ENDIAN #ifdef __LITTLE_ENDIAN
.fourcc = V4L2_PIX_FMT_BGR24, .fourcc = V4L2_PIX_FMT_BGR24,
#else #else
...@@ -145,7 +145,7 @@ const struct zoran_format zoran_formats[] = { ...@@ -145,7 +145,7 @@ const struct zoran_format zoran_formats[] = {
}, { }, {
.name = "32-bit RGB", .name = "32-bit RGB",
.palette = VIDEO_PALETTE_RGB32, .palette = VIDEO_PALETTE_RGB32,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
#ifdef __LITTLE_ENDIAN #ifdef __LITTLE_ENDIAN
.fourcc = V4L2_PIX_FMT_BGR32, .fourcc = V4L2_PIX_FMT_BGR32,
#else #else
...@@ -159,7 +159,7 @@ const struct zoran_format zoran_formats[] = { ...@@ -159,7 +159,7 @@ const struct zoran_format zoran_formats[] = {
}, { }, {
.name = "4:2:2, packed, YUYV", .name = "4:2:2, packed, YUYV",
.palette = VIDEO_PALETTE_YUV422, .palette = VIDEO_PALETTE_YUV422,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
.fourcc = V4L2_PIX_FMT_YUYV, .fourcc = V4L2_PIX_FMT_YUYV,
.colorspace = V4L2_COLORSPACE_SMPTE170M, .colorspace = V4L2_COLORSPACE_SMPTE170M,
#endif #endif
...@@ -169,7 +169,7 @@ const struct zoran_format zoran_formats[] = { ...@@ -169,7 +169,7 @@ const struct zoran_format zoran_formats[] = {
}, { }, {
.name = "Hardware-encoded Motion-JPEG", .name = "Hardware-encoded Motion-JPEG",
.palette = -1, .palette = -1,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
.fourcc = V4L2_PIX_FMT_MJPEG, .fourcc = V4L2_PIX_FMT_MJPEG,
.colorspace = V4L2_COLORSPACE_SMPTE170M, .colorspace = V4L2_COLORSPACE_SMPTE170M,
#endif #endif
...@@ -210,7 +210,7 @@ static int lock_norm = 0; /* 1=Don't change TV standard (norm) */ ...@@ -210,7 +210,7 @@ static int lock_norm = 0; /* 1=Don't change TV standard (norm) */
module_param(lock_norm, int, 0); module_param(lock_norm, int, 0);
MODULE_PARM_DESC(lock_norm, "Users can't change norm"); MODULE_PARM_DESC(lock_norm, "Users can't change norm");
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
/* small helper function for calculating buffersizes for v4l2 /* small helper function for calculating buffersizes for v4l2
* we calculate the nearest higher power-of-two, which * we calculate the nearest higher power-of-two, which
* will be the recommended buffersize */ * will be the recommended buffersize */
...@@ -1761,7 +1761,7 @@ setup_overlay (struct file *file, ...@@ -1761,7 +1761,7 @@ setup_overlay (struct file *file,
return wait_grab_pending(zr); return wait_grab_pending(zr);
} }
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
/* get the status of a buffer in the clients buffer queue */ /* get the status of a buffer in the clients buffer queue */
static int static int
zoran_v4l2_buffer_status (struct file *file, zoran_v4l2_buffer_status (struct file *file,
...@@ -2676,7 +2676,7 @@ zoran_do_ioctl (struct inode *inode, ...@@ -2676,7 +2676,7 @@ zoran_do_ioctl (struct inode *inode,
} }
break; break;
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
/* The new video4linux2 capture interface - much nicer than video4linux1, since /* The new video4linux2 capture interface - much nicer than video4linux1, since
* it allows for integrating the JPEG capturing calls inside standard v4l2 * it allows for integrating the JPEG capturing calls inside standard v4l2
...@@ -4689,7 +4689,7 @@ static struct file_operations zoran_fops = { ...@@ -4689,7 +4689,7 @@ static struct file_operations zoran_fops = {
struct video_device zoran_template __devinitdata = { struct video_device zoran_template __devinitdata = {
.name = ZORAN_NAME, .name = ZORAN_NAME,
.type = ZORAN_VID_TYPE, .type = ZORAN_VID_TYPE,
#ifdef HAVE_V4L2 #ifdef CONFIG_VIDEO_V4L2
.type2 = ZORAN_V4L2_VID_FLAGS, .type2 = ZORAN_V4L2_VID_FLAGS,
#endif #endif
.hardware = ZORAN_HARDWARE, .hardware = ZORAN_HARDWARE,
......
...@@ -1579,7 +1579,7 @@ static int __init serial_console_setup(struct console *co, char *options) ...@@ -1579,7 +1579,7 @@ static int __init serial_console_setup(struct console *co, char *options)
h8300_sci_enable(port, sci_enable); h8300_sci_enable(port, sci_enable);
#endif #endif
#elif defined(CONFIG_SUPERH64) #elif defined(CONFIG_SUPERH64)
port->uartclk = current_cpu_info.module_clock * 16; port->uartclk = current_cpu_data.module_clock * 16;
#else #else
{ {
struct clk *clk = clk_get("module_clk"); struct clk *clk = clk_get("module_clk");
...@@ -1720,7 +1720,7 @@ static int __init sci_init(void) ...@@ -1720,7 +1720,7 @@ static int __init sci_init(void)
#if defined(__H8300H__) || defined(__H8300S__) #if defined(__H8300H__) || defined(__H8300S__)
sciport->port.uartclk = CONFIG_CPU_CLOCK; sciport->port.uartclk = CONFIG_CPU_CLOCK;
#elif defined(CONFIG_SUPERH64) #elif defined(CONFIG_SUPERH64)
sciport->port.uartclk = current_cpu_info.module_clock * 16; sciport->port.uartclk = current_cpu_data.module_clock * 16;
#else #else
struct clk *clk = clk_get("module_clk"); struct clk *clk = clk_get("module_clk");
sciport->port.uartclk = clk_get_rate(clk) * 16; sciport->port.uartclk = clk_get_rate(clk) * 16;
......
...@@ -810,12 +810,9 @@ static int usb_cleanup(struct yealink_dev *yld, int err) ...@@ -810,12 +810,9 @@ static int usb_cleanup(struct yealink_dev *yld, int err)
if (yld == NULL) if (yld == NULL)
return err; return err;
if (yld->urb_irq) { usb_kill_urb(yld->urb_irq); /* parameter validation in core/urb */
usb_kill_urb(yld->urb_irq); usb_kill_urb(yld->urb_ctl); /* parameter validation in core/urb */
usb_free_urb(yld->urb_irq);
}
if (yld->urb_ctl)
usb_free_urb(yld->urb_ctl);
if (yld->idev) { if (yld->idev) {
if (err) if (err)
input_free_device(yld->idev); input_free_device(yld->idev);
...@@ -831,6 +828,9 @@ static int usb_cleanup(struct yealink_dev *yld, int err) ...@@ -831,6 +828,9 @@ static int usb_cleanup(struct yealink_dev *yld, int err)
if (yld->irq_data) if (yld->irq_data)
usb_buffer_free(yld->udev, USB_PKT_LEN, usb_buffer_free(yld->udev, USB_PKT_LEN,
yld->irq_data, yld->irq_dma); yld->irq_data, yld->irq_dma);
usb_free_urb(yld->urb_irq); /* parameter validation in core/urb */
usb_free_urb(yld->urb_ctl); /* parameter validation in core/urb */
kfree(yld); kfree(yld);
return err; return err;
} }
......
...@@ -464,8 +464,10 @@ static int serial_read_proc (char *page, char **start, off_t off, int count, int ...@@ -464,8 +464,10 @@ static int serial_read_proc (char *page, char **start, off_t off, int count, int
length += sprintf (page+length, " path:%s", tmp); length += sprintf (page+length, " path:%s", tmp);
length += sprintf (page+length, "\n"); length += sprintf (page+length, "\n");
if ((length + begin) > (off + count)) if ((length + begin) > (off + count)) {
usb_serial_put(serial);
goto done; goto done;
}
if ((length + begin) < off) { if ((length + begin) < off) {
begin += length; begin += length;
length = 0; length = 0;
......
...@@ -82,7 +82,6 @@ static int construct_dentry(struct qstr *qstring, struct file *file, ...@@ -82,7 +82,6 @@ static int construct_dentry(struct qstr *qstring, struct file *file,
if(*ptmp_inode == NULL) if(*ptmp_inode == NULL)
return rc; return rc;
rc = 1; rc = 1;
d_instantiate(tmp_dentry, *ptmp_inode);
} }
} else { } else {
tmp_dentry = d_alloc(file->f_dentry, qstring); tmp_dentry = d_alloc(file->f_dentry, qstring);
...@@ -99,9 +98,7 @@ static int construct_dentry(struct qstr *qstring, struct file *file, ...@@ -99,9 +98,7 @@ static int construct_dentry(struct qstr *qstring, struct file *file,
tmp_dentry->d_op = &cifs_dentry_ops; tmp_dentry->d_op = &cifs_dentry_ops;
if(*ptmp_inode == NULL) if(*ptmp_inode == NULL)
return rc; return rc;
rc = 1; rc = 2;
d_instantiate(tmp_dentry, *ptmp_inode);
d_rehash(tmp_dentry);
} }
tmp_dentry->d_time = jiffies; tmp_dentry->d_time = jiffies;
...@@ -870,6 +867,12 @@ static int cifs_filldir(char *pfindEntry, struct file *file, ...@@ -870,6 +867,12 @@ static int cifs_filldir(char *pfindEntry, struct file *file,
pfindEntry, &obj_type, rc); pfindEntry, &obj_type, rc);
else else
fill_in_inode(tmp_inode, 1 /* NT */, pfindEntry, &obj_type, rc); fill_in_inode(tmp_inode, 1 /* NT */, pfindEntry, &obj_type, rc);
if(rc) /* new inode - needs to be tied to dentry */ {
d_instantiate(tmp_dentry, tmp_inode);
if(rc == 2)
d_rehash(tmp_dentry);
}
rc = filldir(direntry,qstring.name,qstring.len,file->f_pos, rc = filldir(direntry,qstring.name,qstring.len,file->f_pos,
......
...@@ -1390,11 +1390,19 @@ xfs_vm_direct_IO( ...@@ -1390,11 +1390,19 @@ xfs_vm_direct_IO(
iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN); iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN);
ret = blockdev_direct_IO_own_locking(rw, iocb, inode, if (rw == WRITE) {
iomap.iomap_target->bt_bdev, ret = blockdev_direct_IO_own_locking(rw, iocb, inode,
iov, offset, nr_segs, iomap.iomap_target->bt_bdev,
xfs_get_blocks_direct, iov, offset, nr_segs,
xfs_end_io_direct); xfs_get_blocks_direct,
xfs_end_io_direct);
} else {
ret = blockdev_direct_IO_no_locking(rw, iocb, inode,
iomap.iomap_target->bt_bdev,
iov, offset, nr_segs,
xfs_get_blocks_direct,
xfs_end_io_direct);
}
if (unlikely(ret <= 0 && iocb->private)) if (unlikely(ret <= 0 && iocb->private))
xfs_destroy_ioend(iocb->private); xfs_destroy_ioend(iocb->private);
......
...@@ -264,7 +264,9 @@ xfs_read( ...@@ -264,7 +264,9 @@ xfs_read(
dmflags, &locktype); dmflags, &locktype);
if (ret) { if (ret) {
xfs_iunlock(ip, XFS_IOLOCK_SHARED); xfs_iunlock(ip, XFS_IOLOCK_SHARED);
goto unlock_mutex; if (unlikely(ioflags & IO_ISDIRECT))
mutex_unlock(&inode->i_mutex);
return ret;
} }
} }
...@@ -272,6 +274,9 @@ xfs_read( ...@@ -272,6 +274,9 @@ xfs_read(
bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)), bhv_vop_flushinval_pages(vp, ctooff(offtoct(*offset)),
-1, FI_REMAPF_LOCKED); -1, FI_REMAPF_LOCKED);
if (unlikely(ioflags & IO_ISDIRECT))
mutex_unlock(&inode->i_mutex);
xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore, xfs_rw_enter_trace(XFS_READ_ENTER, &ip->i_iocore,
(void *)iovp, segs, *offset, ioflags); (void *)iovp, segs, *offset, ioflags);
ret = __generic_file_aio_read(iocb, iovp, segs, offset); ret = __generic_file_aio_read(iocb, iovp, segs, offset);
...@@ -281,10 +286,6 @@ xfs_read( ...@@ -281,10 +286,6 @@ xfs_read(
XFS_STATS_ADD(xs_read_bytes, ret); XFS_STATS_ADD(xs_read_bytes, ret);
xfs_iunlock(ip, XFS_IOLOCK_SHARED); xfs_iunlock(ip, XFS_IOLOCK_SHARED);
unlock_mutex:
if (unlikely(ioflags & IO_ISDIRECT))
mutex_unlock(&inode->i_mutex);
return ret; return ret;
} }
...@@ -390,6 +391,8 @@ xfs_splice_write( ...@@ -390,6 +391,8 @@ xfs_splice_write(
xfs_inode_t *ip = XFS_BHVTOI(bdp); xfs_inode_t *ip = XFS_BHVTOI(bdp);
xfs_mount_t *mp = ip->i_mount; xfs_mount_t *mp = ip->i_mount;
ssize_t ret; ssize_t ret;
struct inode *inode = outfilp->f_mapping->host;
xfs_fsize_t isize;
XFS_STATS_INC(xs_write_calls); XFS_STATS_INC(xs_write_calls);
if (XFS_FORCED_SHUTDOWN(ip->i_mount)) if (XFS_FORCED_SHUTDOWN(ip->i_mount))
...@@ -416,6 +419,20 @@ xfs_splice_write( ...@@ -416,6 +419,20 @@ xfs_splice_write(
if (ret > 0) if (ret > 0)
XFS_STATS_ADD(xs_write_bytes, ret); XFS_STATS_ADD(xs_write_bytes, ret);
isize = i_size_read(inode);
if (unlikely(ret < 0 && ret != -EFAULT && *ppos > isize))
*ppos = isize;
if (*ppos > ip->i_d.di_size) {
xfs_ilock(ip, XFS_ILOCK_EXCL);
if (*ppos > ip->i_d.di_size) {
ip->i_d.di_size = *ppos;
i_size_write(inode, *ppos);
ip->i_update_core = 1;
ip->i_update_size = 1;
}
xfs_iunlock(ip, XFS_ILOCK_EXCL);
}
xfs_iunlock(ip, XFS_IOLOCK_EXCL); xfs_iunlock(ip, XFS_IOLOCK_EXCL);
return ret; return ret;
} }
......
...@@ -203,7 +203,7 @@ xfs_qm_statvfs( ...@@ -203,7 +203,7 @@ xfs_qm_statvfs(
if (error || !vnode) if (error || !vnode)
return error; return error;
mp = XFS_BHVTOM(bhv); mp = xfs_vfstom(bhvtovfs(bhv));
ip = xfs_vtoi(vnode); ip = xfs_vtoi(vnode);
if (!(ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)) if (!(ip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT))
......
...@@ -43,6 +43,26 @@ typedef enum xfs_alloctype ...@@ -43,6 +43,26 @@ typedef enum xfs_alloctype
#define XFS_ALLOC_FLAG_TRYLOCK 0x00000001 /* use trylock for buffer locking */ #define XFS_ALLOC_FLAG_TRYLOCK 0x00000001 /* use trylock for buffer locking */
#define XFS_ALLOC_FLAG_FREEING 0x00000002 /* indicate caller is freeing extents*/ #define XFS_ALLOC_FLAG_FREEING 0x00000002 /* indicate caller is freeing extents*/
/*
* In order to avoid ENOSPC-related deadlock caused by
* out-of-order locking of AGF buffer (PV 947395), we place
* constraints on the relationship among actual allocations for
* data blocks, freelist blocks, and potential file data bmap
* btree blocks. However, these restrictions may result in no
* actual space allocated for a delayed extent, for example, a data
* block in a certain AG is allocated but there is no additional
* block for the additional bmap btree block due to a split of the
* bmap btree of the file. The result of this may lead to an
* infinite loop in xfssyncd when the file gets flushed to disk and
* all delayed extents need to be actually allocated. To get around
* this, we explicitly set aside a few blocks which will not be
* reserved in delayed allocation. Considering the minimum number of
* needed freelist blocks is 4 fsbs _per AG_, a potential split of file's bmap
* btree requires 1 fsb, so we set the number of set-aside blocks
* to 4 + 4*agcount.
*/
#define XFS_ALLOC_SET_ASIDE(mp) (4 + ((mp)->m_sb.sb_agcount * 4))
/* /*
* Argument structure for xfs_alloc routines. * Argument structure for xfs_alloc routines.
* This is turned into a structure to avoid having 20 arguments passed * This is turned into a structure to avoid having 20 arguments passed
......
...@@ -462,7 +462,7 @@ xfs_fs_counts( ...@@ -462,7 +462,7 @@ xfs_fs_counts(
xfs_icsb_sync_counters_lazy(mp); xfs_icsb_sync_counters_lazy(mp);
s = XFS_SB_LOCK(mp); s = XFS_SB_LOCK(mp);
cnt->freedata = mp->m_sb.sb_fdblocks; cnt->freedata = mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
cnt->freertx = mp->m_sb.sb_frextents; cnt->freertx = mp->m_sb.sb_frextents;
cnt->freeino = mp->m_sb.sb_ifree; cnt->freeino = mp->m_sb.sb_ifree;
cnt->allocino = mp->m_sb.sb_icount; cnt->allocino = mp->m_sb.sb_icount;
...@@ -519,15 +519,19 @@ xfs_reserve_blocks( ...@@ -519,15 +519,19 @@ xfs_reserve_blocks(
} }
mp->m_resblks = request; mp->m_resblks = request;
} else { } else {
__int64_t free;
free = mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
delta = request - mp->m_resblks; delta = request - mp->m_resblks;
lcounter = mp->m_sb.sb_fdblocks - delta; lcounter = free - delta;
if (lcounter < 0) { if (lcounter < 0) {
/* We can't satisfy the request, just get what we can */ /* We can't satisfy the request, just get what we can */
mp->m_resblks += mp->m_sb.sb_fdblocks; mp->m_resblks += free;
mp->m_resblks_avail += mp->m_sb.sb_fdblocks; mp->m_resblks_avail += free;
mp->m_sb.sb_fdblocks = 0; mp->m_sb.sb_fdblocks = XFS_ALLOC_SET_ASIDE(mp);
} else { } else {
mp->m_sb.sb_fdblocks = lcounter; mp->m_sb.sb_fdblocks =
lcounter + XFS_ALLOC_SET_ASIDE(mp);
mp->m_resblks = request; mp->m_resblks = request;
mp->m_resblks_avail += delta; mp->m_resblks_avail += delta;
} }
......
...@@ -1243,24 +1243,6 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields) ...@@ -1243,24 +1243,6 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields)
xfs_trans_log_buf(tp, bp, first, last); xfs_trans_log_buf(tp, bp, first, last);
} }
/*
* In order to avoid ENOSPC-related deadlock caused by
* out-of-order locking of AGF buffer (PV 947395), we place
* constraints on the relationship among actual allocations for
* data blocks, freelist blocks, and potential file data bmap
* btree blocks. However, these restrictions may result in no
* actual space allocated for a delayed extent, for example, a data
* block in a certain AG is allocated but there is no additional
* block for the additional bmap btree block due to a split of the
* bmap btree of the file. The result of this may lead to an
* infinite loop in xfssyncd when the file gets flushed to disk and
* all delayed extents need to be actually allocated. To get around
* this, we explicitly set aside a few blocks which will not be
* reserved in delayed allocation. Considering the minimum number of
* needed freelist blocks is 4 fsbs, a potential split of file's bmap
* btree requires 1 fsb, so we set the number of set-aside blocks to 8.
*/
#define SET_ASIDE_BLOCKS 8
/* /*
* xfs_mod_incore_sb_unlocked() is a utility routine common used to apply * 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,7 +1288,8 @@ xfs_mod_incore_sb_unlocked(xfs_mount_t *mp, xfs_sb_field_t field,
return 0; return 0;
case XFS_SBS_FDBLOCKS: case XFS_SBS_FDBLOCKS:
lcounter = (long long)mp->m_sb.sb_fdblocks - SET_ASIDE_BLOCKS; lcounter = (long long)
mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
res_used = (long long)(mp->m_resblks - mp->m_resblks_avail); res_used = (long long)(mp->m_resblks - mp->m_resblks_avail);
if (delta > 0) { /* Putting blocks back */ 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,7 +1323,7 @@ xfs_mod_incore_sb_unlocked(xfs_mount_t *mp, xfs_sb_field_t field,
} }
} }
mp->m_sb.sb_fdblocks = lcounter + SET_ASIDE_BLOCKS; mp->m_sb.sb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp);
return 0; return 0;
case XFS_SBS_FREXTENTS: case XFS_SBS_FREXTENTS:
lcounter = (long long)mp->m_sb.sb_frextents; lcounter = (long long)mp->m_sb.sb_frextents;
...@@ -2021,7 +2004,8 @@ xfs_icsb_sync_counters_lazy( ...@@ -2021,7 +2004,8 @@ xfs_icsb_sync_counters_lazy(
* when we get near ENOSPC. * when we get near ENOSPC.
*/ */
#define XFS_ICSB_INO_CNTR_REENABLE 64 #define XFS_ICSB_INO_CNTR_REENABLE 64
#define XFS_ICSB_FDBLK_CNTR_REENABLE 512 #define XFS_ICSB_FDBLK_CNTR_REENABLE(mp) \
(512 + XFS_ALLOC_SET_ASIDE(mp))
STATIC void STATIC void
xfs_icsb_balance_counter( xfs_icsb_balance_counter(
xfs_mount_t *mp, xfs_mount_t *mp,
...@@ -2055,7 +2039,7 @@ xfs_icsb_balance_counter( ...@@ -2055,7 +2039,7 @@ xfs_icsb_balance_counter(
case XFS_SBS_FDBLOCKS: case XFS_SBS_FDBLOCKS:
count = mp->m_sb.sb_fdblocks; count = mp->m_sb.sb_fdblocks;
resid = do_div(count, weight); resid = do_div(count, weight);
if (count < XFS_ICSB_FDBLK_CNTR_REENABLE) if (count < XFS_ICSB_FDBLK_CNTR_REENABLE(mp))
goto out; goto out;
break; break;
default: default:
...@@ -2110,11 +2094,11 @@ xfs_icsb_modify_counters_int( ...@@ -2110,11 +2094,11 @@ xfs_icsb_modify_counters_int(
case XFS_SBS_FDBLOCKS: case XFS_SBS_FDBLOCKS:
BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0); BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0);
lcounter = icsbp->icsb_fdblocks; lcounter = icsbp->icsb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
lcounter += delta; lcounter += delta;
if (unlikely(lcounter < 0)) if (unlikely(lcounter < 0))
goto slow_path; goto slow_path;
icsbp->icsb_fdblocks = lcounter; icsbp->icsb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp);
break; break;
default: default:
BUG(); BUG();
......
...@@ -811,7 +811,8 @@ xfs_statvfs( ...@@ -811,7 +811,8 @@ xfs_statvfs(
statp->f_bsize = sbp->sb_blocksize; statp->f_bsize = sbp->sb_blocksize;
lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0; lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0;
statp->f_blocks = sbp->sb_dblocks - lsize; statp->f_blocks = sbp->sb_dblocks - lsize;
statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks; statp->f_bfree = statp->f_bavail =
sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
fakeinos = statp->f_bfree << sbp->sb_inopblog; fakeinos = statp->f_bfree << sbp->sb_inopblog;
#if XFS_BIG_INUMS #if XFS_BIG_INUMS
fakeinos += mp->m_inoadd; fakeinos += mp->m_inoadd;
......
#ifndef __ASM_SH64_BUG_H #ifndef __ASM_SH64_BUG_H
#define __ASM_SH64_BUG_H #define __ASM_SH64_BUG_H
#ifdef CONFIG_BUG
/* /*
* Tell the user there is some problem, then force a segfault (in process * Tell the user there is some problem, then force a segfault (in process
* context) or a panic (interrupt context). * context) or a panic (interrupt context).
...@@ -11,17 +11,9 @@ ...@@ -11,17 +11,9 @@
*(volatile int *)0 = 0; \ *(volatile int *)0 = 0; \
} while (0) } while (0)
#define BUG_ON(condition) do { \ #define HAVE_ARCH_BUG
if (unlikely((condition)!=0)) \ #endif
BUG(); \
} while(0)
#define WARN_ON(condition) do { \ #include <asm-generic/bug.h>
if (unlikely((condition)!=0)) { \
printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \
dump_stack(); \
} \
} while (0)
#endif /* __ASM_SH64_BUG_H */ #endif /* __ASM_SH64_BUG_H */
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <asm/types.h> #include <asm/types.h>
static __inline__ __const__ __u32 ___arch__swab32(__u32 x) static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
{ {
__asm__("byterev %0, %0\n\t" __asm__("byterev %0, %0\n\t"
"shari %0, 32, %0" "shari %0, 32, %0"
...@@ -23,7 +23,7 @@ static __inline__ __const__ __u32 ___arch__swab32(__u32 x) ...@@ -23,7 +23,7 @@ static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
return x; return x;
} }
static __inline__ __const__ __u16 ___arch__swab16(__u16 x) static inline __attribute_const__ __u16 ___arch__swab16(__u16 x)
{ {
__asm__("byterev %0, %0\n\t" __asm__("byterev %0, %0\n\t"
"shari %0, 48, %0" "shari %0, 48, %0"
......
...@@ -126,22 +126,30 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg, ...@@ -126,22 +126,30 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg,
static inline void dma_sync_single_for_cpu(struct device *dev, static inline void dma_sync_single_for_cpu(struct device *dev,
dma_addr_t dma_handle, size_t size, dma_addr_t dma_handle, size_t size,
enum dma_data_direction dir) enum dma_data_direction dir)
__attribute__ ((alias("dma_sync_single"))); {
dma_sync_single(dev, dma_handle, size, dir);
}
static inline void dma_sync_single_for_device(struct device *dev, static inline void dma_sync_single_for_device(struct device *dev,
dma_addr_t dma_handle, size_t size, dma_addr_t dma_handle, size_t size,
enum dma_data_direction dir) enum dma_data_direction dir)
__attribute__ ((alias("dma_sync_single"))); {
dma_sync_single(dev, dma_handle, size, dir);
}
static inline void dma_sync_sg_for_cpu(struct device *dev, static inline void dma_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sg, int nelems, struct scatterlist *sg, int nelems,
enum dma_data_direction dir) enum dma_data_direction dir)
__attribute__ ((alias("dma_sync_sg"))); {
dma_sync_sg(dev, sg, nelems, dir);
}
static inline void dma_sync_sg_for_device(struct device *dev, static inline void dma_sync_sg_for_device(struct device *dev,
struct scatterlist *sg, int nelems, struct scatterlist *sg, int nelems,
enum dma_data_direction dir) enum dma_data_direction dir)
__attribute__ ((alias("dma_sync_sg"))); {
dma_sync_sg(dev, sg, nelems, dir);
}
static inline int dma_get_cache_alignment(void) static inline int dma_get_cache_alignment(void)
{ {
......
...@@ -123,6 +123,13 @@ void insw(unsigned long port, void *addr, unsigned long count); ...@@ -123,6 +123,13 @@ void insw(unsigned long port, void *addr, unsigned long count);
void outsl(unsigned long port, const void *addr, unsigned long count); void outsl(unsigned long port, const void *addr, unsigned long count);
void insl(unsigned long port, void *addr, unsigned long count); void insl(unsigned long port, void *addr, unsigned long count);
#define __raw_readb readb
#define __raw_readw readw
#define __raw_readl readl
#define __raw_writeb writeb
#define __raw_writew writew
#define __raw_writel writel
void memcpy_toio(void __iomem *to, const void *from, long count); void memcpy_toio(void __iomem *to, const void *from, long count);
void memcpy_fromio(void *to, void __iomem *from, long count); void memcpy_fromio(void *to, void __iomem *from, long count);
......
...@@ -28,7 +28,7 @@ struct pt_regs { ...@@ -28,7 +28,7 @@ struct pt_regs {
#ifdef __KERNEL__ #ifdef __KERNEL__
#define user_mode(regs) (((regs)->sr & 0x40000000)==0) #define user_mode(regs) (((regs)->sr & 0x40000000)==0)
#define instruction_pointer(regs) ((regs)->pc) #define instruction_pointer(regs) ((regs)->pc)
#define profile_pc(regs) instruction_pointer(regs) #define profile_pc(regs) ((unsigned long)instruction_pointer(regs))
extern void show_regs(struct pt_regs *); extern void show_regs(struct pt_regs *);
#endif #endif
......
...@@ -64,7 +64,7 @@ extern void __xchg_called_with_bad_pointer(void); ...@@ -64,7 +64,7 @@ extern void __xchg_called_with_bad_pointer(void);
#define smp_read_barrier_depends() do { } while (0) #define smp_read_barrier_depends() do { } while (0)
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
#define set_rmb(var, value) do { xchg(&var, value); } while (0) #define set_rmb(var, value) do { (void)xchg(&var, value); } while (0)
#define set_mb(var, value) set_rmb(var, value) #define set_mb(var, value) set_rmb(var, value)
/* Interrupt Control */ /* Interrupt Control */
......
...@@ -128,25 +128,20 @@ do { \ ...@@ -128,25 +128,20 @@ do { \
#define __get_user_nocheck(x,ptr,size) \ #define __get_user_nocheck(x,ptr,size) \
({ \ ({ \
long __gu_addr = (long)(ptr); \ long __gu_err, __gu_val; \
long __gu_err; \ __get_user_size((void *)&__gu_val, (long)(ptr), \
__typeof(*(ptr)) __gu_val; \ (size), __gu_err); \
__asm__ ("":"=r" (__gu_val)); \ (x) = (__typeof__(*(ptr)))__gu_val; \
__asm__ ("":"=r" (__gu_err)); \
__get_user_size((void *)&__gu_val, __gu_addr, (size), __gu_err); \
(x) = (__typeof__(*(ptr))) __gu_val; \
__gu_err; \ __gu_err; \
}) })
#define __get_user_check(x,ptr,size) \ #define __get_user_check(x,ptr,size) \
({ \ ({ \
long __gu_addr = (long)(ptr); \ long __gu_addr = (long)(ptr); \
long __gu_err = -EFAULT; \ long __gu_err = -EFAULT, __gu_val; \
__typeof(*(ptr)) __gu_val; \
__asm__ ("":"=r" (__gu_val)); \
__asm__ ("":"=r" (__gu_err)); \
if (__access_ok(__gu_addr, (size))) \ if (__access_ok(__gu_addr, (size))) \
__get_user_size((void *)&__gu_val, __gu_addr, (size), __gu_err); \ __get_user_size((void *)&__gu_val, __gu_addr, \
(size), __gu_err); \
(x) = (__typeof__(*(ptr))) __gu_val; \ (x) = (__typeof__(*(ptr))) __gu_val; \
__gu_err; \ __gu_err; \
}) })
......
...@@ -14,8 +14,7 @@ ...@@ -14,8 +14,7 @@
#include <linux/videodev2.h> #include <linux/videodev2.h>
#ifdef CONFIG_VIDEO_V4L1_COMPAT #if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__)
#define HAVE_V4L1 1
struct video_capability struct video_capability
{ {
......
...@@ -22,8 +22,6 @@ ...@@ -22,8 +22,6 @@
#endif #endif
#include <linux/types.h> #include <linux/types.h>
#define HAVE_V4L2 1
/* /*
* Common stuff for both V4L1 and V4L2 * Common stuff for both V4L1 and V4L2
* Moved from videodev.h * Moved from videodev.h
......
...@@ -194,7 +194,7 @@ struct video_device ...@@ -194,7 +194,7 @@ struct video_device
int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i); int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i);
#ifdef HAVE_V4L1 #ifdef CONFIG_VIDEO_V4L1_COMPAT
/* buffer type is struct vidio_mbuf * */ /* buffer type is struct vidio_mbuf * */
int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p); int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p);
#endif #endif
...@@ -335,7 +335,7 @@ extern int video_usercopy(struct inode *inode, struct file *file, ...@@ -335,7 +335,7 @@ extern int video_usercopy(struct inode *inode, struct file *file,
unsigned int cmd, void *arg)); unsigned int cmd, void *arg));
#ifdef HAVE_V4L1 #ifdef CONFIG_VIDEO_V4L1_COMPAT
#include <linux/mm.h> #include <linux/mm.h>
extern struct video_device* video_devdata(struct file*); extern struct video_device* video_devdata(struct file*);
...@@ -357,6 +357,8 @@ video_device_remove_file(struct video_device *vfd, ...@@ -357,6 +357,8 @@ video_device_remove_file(struct video_device *vfd,
class_device_remove_file(&vfd->class_dev, attr); class_device_remove_file(&vfd->class_dev, attr);
} }
#endif /* CONFIG_VIDEO_V4L1_COMPAT */
#ifdef OBSOLETE_OWNER /* to be removed soon */ #ifdef OBSOLETE_OWNER /* to be removed soon */
/* helper functions to access driver private data. */ /* helper functions to access driver private data. */
static inline void *video_get_drvdata(struct video_device *dev) 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,6 +374,5 @@ static inline void video_set_drvdata(struct video_device *dev, void *data)
extern int video_exclusive_open(struct inode *inode, struct file *file); extern int video_exclusive_open(struct inode *inode, struct file *file);
extern int video_exclusive_release(struct inode *inode, struct file *file); extern int video_exclusive_release(struct inode *inode, struct file *file);
#endif /* HAVE_V4L1 */
#endif /* _V4L2_DEV_H */ #endif /* _V4L2_DEV_H */
...@@ -38,6 +38,11 @@ config LIBCRC32C ...@@ -38,6 +38,11 @@ config LIBCRC32C
require M here. See Castagnoli93. require M here. See Castagnoli93.
Module will be libcrc32c. Module will be libcrc32c.
config AUDIT_GENERIC
bool
depends on AUDIT && !AUDIT_ARCH
default y
# #
# compression support is select'ed if needed # compression support is select'ed if needed
# #
......
...@@ -49,6 +49,7 @@ obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o ...@@ -49,6 +49,7 @@ obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o
obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o
obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o
obj-$(CONFIG_SMP) += percpu_counter.o obj-$(CONFIG_SMP) += percpu_counter.o
obj-$(CONFIG_AUDIT_GENERIC) += audit.o
obj-$(CONFIG_SWIOTLB) += swiotlb.o obj-$(CONFIG_SWIOTLB) += swiotlb.o
......
...@@ -30,8 +30,10 @@ int audit_classify_syscall(int abi, unsigned syscall) ...@@ -30,8 +30,10 @@ int audit_classify_syscall(int abi, unsigned syscall)
return 2; return 2;
case __NR_openat: case __NR_openat:
return 3; return 3;
#ifdef __NR_socketcall
case __NR_socketcall: case __NR_socketcall:
return 4; return 4;
#endif
case __NR_execve: case __NR_execve:
return 5; return 5;
default: default:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册