* Linux 2.6.27.53
@ 2010-09-20 21:40 Greg KH
2010-09-20 21:40 ` Greg KH
0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2010-09-20 21:40 UTC (permalink / raw)
To: linux-kernel, Andrew Morton, torvalds, stable; +Cc: lwn
I'm announcing the release of the 2.6.27.54 kernel.
All users of the 2.6.27 kernel series must upgrade.
The updated 2.6.27.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.27.y.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 +-
arch/ia64/include/asm/compat.h | 2 +-
arch/powerpc/include/asm/compat.h | 2 +-
arch/s390/include/asm/compat.h | 2 +-
arch/sparc/include/asm/compat.h | 2 +-
arch/x86/ia32/ia32entry.S | 22 ++++++++++++++--------
drivers/hwmon/f75375s.c | 6 +++---
drivers/net/wireless/ath9k/ath9k.h | 2 +-
drivers/power/apm_power.c | 1 +
include/asm-mips/compat.h | 2 +-
include/asm-parisc/compat.h | 2 +-
include/asm-x86/compat.h | 2 +-
include/linux/compat.h | 2 ++
kernel/compat.c | 22 ++++++++++++++++++++++
kernel/trace/ftrace.c | 2 +-
mm/bounce.c | 2 +-
net/irda/irlan/irlan_common.c | 2 +-
sound/core/seq/oss/seq_oss_init.c | 9 ++++-----
18 files changed, 58 insertions(+), 28 deletions(-)
Anton Vorontsov (1):
apm_power: Add missing break statement
Dan Carpenter (1):
irda: off by one
Gary King (1):
bounce: call flush_dcache_page() after bounce_copy_vec()
Greg Kroah-Hartman (1):
Linux 2.6.27.54
Guillem Jover (2):
hwmon: (f75375s) Shift control mode to the correct bit position
hwmon: (f75375s) Do not overwrite values read from registers
H. Peter Anvin (2):
x86-64, compat: Test %rax for the syscall number, not %eax
compat: Make compat_alloc_user_space() incorporate the access_ok()
Luis R. Rodriguez (1):
ath9k_hw: fix parsing of HT40 5 GHz CTLs
Roland McGrath (1):
x86-64, compat: Retruncate rax after ia32 syscall entry tracing
Steven Rostedt (1):
tracing: Do not allow llseek to set_ftrace_filter
Takashi Iwai (1):
ALSA: seq/oss - Fix double-free at error path of snd_seq_oss_open()
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Linux 2.6.27.53 2010-09-20 21:40 Linux 2.6.27.53 Greg KH @ 2010-09-20 21:40 ` Greg KH 0 siblings, 0 replies; 4+ messages in thread From: Greg KH @ 2010-09-20 21:40 UTC (permalink / raw) To: linux-kernel, Andrew Morton, torvalds, stable, lwn diff --git a/Makefile b/Makefile index 9447d9d..1f60819 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 27 -EXTRAVERSION = .53 +EXTRAVERSION = .54 NAME = Trembling Tortoise # *DOCUMENTATION* diff --git a/arch/ia64/include/asm/compat.h b/arch/ia64/include/asm/compat.h index dfcf75b..c8662cd 100644 --- a/arch/ia64/include/asm/compat.h +++ b/arch/ia64/include/asm/compat.h @@ -198,7 +198,7 @@ ptr_to_compat(void __user *uptr) } static __inline__ void __user * -compat_alloc_user_space (long len) +arch_compat_alloc_user_space (long len) { struct pt_regs *regs = task_pt_regs(current); return (void __user *) (((regs->r12 & 0xffffffff) & -16) - len); diff --git a/arch/powerpc/include/asm/compat.h b/arch/powerpc/include/asm/compat.h index 4774c2f..8d0fff3 100644 --- a/arch/powerpc/include/asm/compat.h +++ b/arch/powerpc/include/asm/compat.h @@ -133,7 +133,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static inline void __user *compat_alloc_user_space(long len) +static inline void __user *arch_compat_alloc_user_space(long len) { struct pt_regs *regs = current->thread.regs; unsigned long usp = regs->gpr[1]; diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h index de065b3..307cac1 100644 --- a/arch/s390/include/asm/compat.h +++ b/arch/s390/include/asm/compat.h @@ -163,7 +163,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static inline void __user *compat_alloc_user_space(long len) +static inline void __user *arch_compat_alloc_user_space(long len) { unsigned long stack; diff --git a/arch/sparc/include/asm/compat.h b/arch/sparc/include/asm/compat.h index 0e70625..612bb38 100644 --- a/arch/sparc/include/asm/compat.h +++ b/arch/sparc/include/asm/compat.h @@ -166,7 +166,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static inline void __user *compat_alloc_user_space(long len) +static inline void __user *arch_compat_alloc_user_space(long len) { struct pt_regs *regs = current_thread_info()->kregs; unsigned long usp = regs->u_regs[UREG_I6]; diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 5d7f4af..745bab2 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S @@ -50,7 +50,12 @@ /* * Reload arg registers from stack in case ptrace changed them. * We don't reload %eax because syscall_trace_enter() returned - * the value it wants us to use in the table lookup. + * the %rax value we should see. Instead, we just truncate that + * value to 32 bits again as we did on entry from user mode. + * If it's a new value set by user_regset during entry tracing, + * this matches the normal truncation of the user-mode value. + * If it's -1 to make us punt the syscall, then (u32)-1 is still + * an appropriately invalid value. */ .macro LOAD_ARGS32 offset, _r9=0 .if \_r9 @@ -60,6 +65,7 @@ movl \offset+48(%rsp),%edx movl \offset+56(%rsp),%esi movl \offset+64(%rsp),%edi + movl %eax,%eax /* zero extension */ .endm .macro CFI_STARTPROC32 simple @@ -153,7 +159,7 @@ ENTRY(ia32_sysenter_target) testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r10) CFI_REMEMBER_STATE jnz sysenter_tracesys - cmpl $(IA32_NR_syscalls-1),%eax + cmpq $(IA32_NR_syscalls-1),%rax ja ia32_badsys sysenter_do_call: IA32_ARG_FIXUP @@ -195,7 +201,7 @@ sysexit_from_sys_call: movl $AUDIT_ARCH_I386,%edi /* 1st arg: audit arch */ call audit_syscall_entry movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall number */ - cmpl $(IA32_NR_syscalls-1),%eax + cmpq $(IA32_NR_syscalls-1),%rax ja ia32_badsys movl %ebx,%edi /* reload 1st syscall arg */ movl RCX-ARGOFFSET(%rsp),%esi /* reload 2nd syscall arg */ @@ -248,7 +254,7 @@ sysenter_tracesys: call syscall_trace_enter LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ RESTORE_REST - cmpl $(IA32_NR_syscalls-1),%eax + cmpq $(IA32_NR_syscalls-1),%rax ja int_ret_from_sys_call /* sysenter_tracesys has set RAX(%rsp) */ jmp sysenter_do_call CFI_ENDPROC @@ -314,7 +320,7 @@ ENTRY(ia32_cstar_target) testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r10) CFI_REMEMBER_STATE jnz cstar_tracesys - cmpl $IA32_NR_syscalls-1,%eax + cmpq $IA32_NR_syscalls-1,%rax ja ia32_badsys cstar_do_call: IA32_ARG_FIXUP 1 @@ -367,7 +373,7 @@ cstar_tracesys: LOAD_ARGS32 ARGOFFSET, 1 /* reload args from stack in case ptrace changed it */ RESTORE_REST xchgl %ebp,%r9d - cmpl $(IA32_NR_syscalls-1),%eax + cmpq $(IA32_NR_syscalls-1),%rax ja int_ret_from_sys_call /* cstar_tracesys has set RAX(%rsp) */ jmp cstar_do_call END(ia32_cstar_target) @@ -425,7 +431,7 @@ ENTRY(ia32_syscall) orl $TS_COMPAT,TI_status(%r10) testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r10) jnz ia32_tracesys - cmpl $(IA32_NR_syscalls-1),%eax + cmpq $(IA32_NR_syscalls-1),%rax ja ia32_badsys ia32_do_call: IA32_ARG_FIXUP @@ -444,7 +450,7 @@ ia32_tracesys: call syscall_trace_enter LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ RESTORE_REST - cmpl $(IA32_NR_syscalls-1),%eax + cmpq $(IA32_NR_syscalls-1),%rax ja int_ret_from_sys_call /* ia32_tracesys has set RAX(%rsp) */ jmp ia32_do_call END(ia32_syscall) diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c index 1692de3..195aea4 100644 --- a/drivers/hwmon/f75375s.c +++ b/drivers/hwmon/f75375s.c @@ -79,7 +79,7 @@ I2C_CLIENT_INSMOD_2(f75373, f75375); #define F75375_REG_PWM2_DROP_DUTY 0x6C #define FAN_CTRL_LINEAR(nr) (4 + nr) -#define FAN_CTRL_MODE(nr) (5 + ((nr) * 2)) +#define FAN_CTRL_MODE(nr) (4 + ((nr) * 2)) /* * Data structures and manipulation thereof @@ -298,7 +298,7 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val) return -EINVAL; fanmode = f75375_read8(client, F75375_REG_FAN_TIMER); - fanmode = ~(3 << FAN_CTRL_MODE(nr)); + fanmode &= ~(3 << FAN_CTRL_MODE(nr)); switch (val) { case 0: /* Full speed */ @@ -350,7 +350,7 @@ static ssize_t set_pwm_mode(struct device *dev, struct device_attribute *attr, mutex_lock(&data->update_lock); conf = f75375_read8(client, F75375_REG_CONFIG1); - conf = ~(1 << FAN_CTRL_LINEAR(nr)); + conf &= ~(1 << FAN_CTRL_LINEAR(nr)); if (val == 0) conf |= (1 << FAN_CTRL_LINEAR(nr)) ; diff --git a/drivers/net/wireless/ath9k/ath9k.h b/drivers/net/wireless/ath9k/ath9k.h index 8ccf374..e4babfb 100644 --- a/drivers/net/wireless/ath9k/ath9k.h +++ b/drivers/net/wireless/ath9k/ath9k.h @@ -554,7 +554,7 @@ enum ath9k_cipher { #define SD_NO_CTL 0xE0 #define NO_CTL 0xff -#define CTL_MODE_M 7 +#define CTL_MODE_M 0xf #define CTL_11A 0 #define CTL_11B 1 #define CTL_11G 2 diff --git a/drivers/power/apm_power.c b/drivers/power/apm_power.c index 936bae5..dc628cb 100644 --- a/drivers/power/apm_power.c +++ b/drivers/power/apm_power.c @@ -233,6 +233,7 @@ static int calculate_capacity(enum apm_source source) empty_design_prop = POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN; now_prop = POWER_SUPPLY_PROP_ENERGY_NOW; avg_prop = POWER_SUPPLY_PROP_ENERGY_AVG; + break; case SOURCE_VOLTAGE: full_prop = POWER_SUPPLY_PROP_VOLTAGE_MAX; empty_prop = POWER_SUPPLY_PROP_VOLTAGE_MIN; diff --git a/include/asm-mips/compat.h b/include/asm-mips/compat.h index 6c5b409..8df5cee 100644 --- a/include/asm-mips/compat.h +++ b/include/asm-mips/compat.h @@ -145,7 +145,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static inline void __user *compat_alloc_user_space(long len) +static inline void __user *arch_compat_alloc_user_space(long len) { struct pt_regs *regs = (struct pt_regs *) ((unsigned long) current_thread_info() + THREAD_SIZE - 32) - 1; diff --git a/include/asm-parisc/compat.h b/include/asm-parisc/compat.h index 7f32611..7c77fa9 100644 --- a/include/asm-parisc/compat.h +++ b/include/asm-parisc/compat.h @@ -146,7 +146,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static __inline__ void __user *compat_alloc_user_space(long len) +static __inline__ void __user *arch_compat_alloc_user_space(long len) { struct pt_regs *regs = ¤t->thread.regs; return (void __user *)regs->gr[30]; diff --git a/include/asm-x86/compat.h b/include/asm-x86/compat.h index 1793ac3..8b1b00e 100644 --- a/include/asm-x86/compat.h +++ b/include/asm-x86/compat.h @@ -204,7 +204,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static inline void __user *compat_alloc_user_space(long len) +static inline void __user *arch_compat_alloc_user_space(long len) { struct pt_regs *regs = task_pt_regs(current); return (void __user *)regs->sp - len; diff --git a/include/linux/compat.h b/include/linux/compat.h index 275b9bd..8cb2fcf 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -291,5 +291,7 @@ asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename, asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename, int flags, int mode); +extern void __user *compat_alloc_user_space(unsigned long len); + #endif /* CONFIG_COMPAT */ #endif /* _LINUX_COMPAT_H */ diff --git a/kernel/compat.c b/kernel/compat.c index 32c254a..e0cdde9 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -23,6 +23,7 @@ #include <linux/timex.h> #include <linux/migrate.h> #include <linux/posix-timers.h> +#include <linux/module.h> #include <asm/uaccess.h> @@ -1081,3 +1082,24 @@ compat_sys_sysinfo(struct compat_sysinfo __user *info) return 0; } + +/* + * Allocate user-space memory for the duration of a single system call, + * in order to marshall parameters inside a compat thunk. + */ +void __user *compat_alloc_user_space(unsigned long len) +{ + void __user *ptr; + + /* If len would occupy more than half of the entire compat space... */ + if (unlikely(len > (((compat_uptr_t)~0) >> 1))) + return NULL; + + ptr = arch_compat_alloc_user_space(len); + + if (unlikely(!access_ok(VERIFY_WRITE, ptr, len))) + return NULL; + + return ptr; +} +EXPORT_SYMBOL_GPL(compat_alloc_user_space); diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index f6e3af3..c8b8105 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1456,7 +1456,7 @@ static struct file_operations ftrace_filter_fops = { .open = ftrace_filter_open, .read = ftrace_regex_read, .write = ftrace_filter_write, - .llseek = ftrace_regex_lseek, + .llseek = no_llseek, .release = ftrace_filter_release, }; diff --git a/mm/bounce.c b/mm/bounce.c index b6d2d0f..e83e280 100644 --- a/mm/bounce.c +++ b/mm/bounce.c @@ -114,8 +114,8 @@ static void copy_to_high_bio_irq(struct bio *to, struct bio *from) */ vfrom = page_address(fromvec->bv_page) + tovec->bv_offset; - flush_dcache_page(tovec->bv_page); bounce_copy_vec(tovec, vfrom); + flush_dcache_page(tovec->bv_page); } } diff --git a/net/irda/irlan/irlan_common.c b/net/irda/irlan/irlan_common.c index 9a1cd87..b00f5d1 100644 --- a/net/irda/irlan/irlan_common.c +++ b/net/irda/irlan/irlan_common.c @@ -1100,7 +1100,7 @@ int irlan_extract_param(__u8 *buf, char *name, char *value, __u16 *len) memcpy(&val_len, buf+n, 2); /* To avoid alignment problems */ le16_to_cpus(&val_len); n+=2; - if (val_len > 1016) { + if (val_len >= 1016) { IRDA_DEBUG(2, "%s(), parameter length to long\n", __func__ ); return -RSP_INVALID_COMMAND_FORMAT; } diff --git a/sound/core/seq/oss/seq_oss_init.c b/sound/core/seq/oss/seq_oss_init.c index d0d721c..1f133fe 100644 --- a/sound/core/seq/oss/seq_oss_init.c +++ b/sound/core/seq/oss/seq_oss_init.c @@ -280,13 +280,10 @@ snd_seq_oss_open(struct file *file, int level) return 0; _error: - snd_seq_oss_writeq_delete(dp->writeq); - snd_seq_oss_readq_delete(dp->readq); snd_seq_oss_synth_cleanup(dp); snd_seq_oss_midi_cleanup(dp); - delete_port(dp); delete_seq_queue(dp->queue); - kfree(dp); + delete_port(dp); return rc; } @@ -349,8 +346,10 @@ create_port(struct seq_oss_devinfo *dp) static int delete_port(struct seq_oss_devinfo *dp) { - if (dp->port < 0) + if (dp->port < 0) { + kfree(dp); return 0; + } debug_printk(("delete_port %i\n", dp->port)); return snd_seq_event_port_detach(dp->cseq, dp->port); ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Og dreams of kernels
@ 2010-08-26 23:55 Greg KH
2010-08-26 23:56 ` Linux 2.6.27.53 Greg KH
0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2010-08-26 23:55 UTC (permalink / raw)
To: linux-kernel, Andrew Morton, torvalds, stable; +Cc: lwn
{pound} {pound} {pound}
Og woke up to the loud noise of the villagers pounding on his cave door.
He stumbled toward it, grabbing the four numbered bags that he knew were
needed at this time.
Opening the door, Og looked at the villagers, all expectant, wondering
where this week's kernels were, what was delaying them, as they needed
their weekly fix.
Reaching into the first bag, quite worn out with a faded "27" on the
outside of it, he grabbed one of the remaining kernels in there and
tossed it into the group. A few small people at the back of the crowd
caught the kernel, and slowly walked off toward the village. Og
wondered about these people, constantly relying on the old kernels to
save them for another day, while resisting the change to move on,
harboring some kind of strange reverence for this specific brand that Og
just could not understand.
Og then reached into a newer bag, with a big "32" on it, grabbed one
kernel from the many remaining in there, and threw it at the group.
Some people dressed in odd clothes, red swirls, green lizards on their
heads, red hats on others, and one remaining group who, despite it being
very unflattering, always wore dull brown clothing, picked up the kernel
and ran away with it back to the village. They were going to use it to
send out to all of their sub-tribe members as they were the ones
responsible for handling this task.
The crowd was smaller now, and Og reached into a bag with a big "34" on
it. It only had one kernel left in it and he threw it at the people,
saying, "this is the last one." This seemed to stun the villagers who
grabbed it, as they had not been paying attention to what happened every
week. The look in their eye ment that they were realizing they had a
long few days ahead of them as they prepared contingency plans due to
the lack of future kernels.
Og looked proudly at the remaining villagers in front of him. These
were the strongest women, the most beautiful men, and the smartest
children around. They had changed over the past few years, becoming
brighter, and more adept and the changes the world was throwing at them.
They were self-reliant, taking whatever Og offered them, providing good
feedback, smart bug reports, and tasty treats of plum pudding during
the holliday season.
Og reached into his bag marked with a big "35" and tossed a plump, jucy
kernel at this final group, who instantly grabbed it up, thanked him for
providing it (unlike those self-absorbed 32 and 27 people) and ran off
to help spread the good news of a new kernel.
Og turned around, threw the empty "34" bag on the heap in the corner of
his cave, and glanced at the calendar. It would be a few more weeks
before Hera provided a new bag for him to distribute to the villagers,
so he would just work with what he had for now.
He stumbled back into the corner of the cave, and layed down, as he was
tired, and drifted off back to sleep, dreaming of tiny sheep on meth.
[This story brought to you by the USA Egg Council, reminding you that
you too can have fever-induced dreams caused by runny eggs eaten at your
favorite local Mexican restaurant if you so desire.]
^ permalink raw reply [flat|nested] 4+ messages in thread* Linux 2.6.27.53 2010-08-26 23:55 Og dreams of kernels Greg KH @ 2010-08-26 23:56 ` Greg KH 2010-08-26 23:59 ` Greg KH 0 siblings, 1 reply; 4+ messages in thread From: Greg KH @ 2010-08-26 23:56 UTC (permalink / raw) To: linux-kernel, Andrew Morton, torvalds, stable; +Cc: lwn I'm announcing the release of the 2.6.27.53 kernel. All users of the 2.6.27 kernel series are very strongly encouraged to upgrade. The updated 2.6.27.y git tree can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.27.y.git;a=summary thanks, greg k-h ------------ Makefile | 14 +++++++++++--- arch/arm/include/asm/ptrace.h | 17 +++++++++++++---- drivers/gpu/drm/drm_drv.c | 4 +++- drivers/usb/serial/io_ti.c | 2 +- drivers/usb/serial/navman.c | 1 + firmware/Makefile | 2 +- net/can/bcm.c | 38 +++++++++++++++++++++++++------------- scripts/mkmakefile | 4 +++- security/selinux/hooks.c | 2 +- 9 files changed, 59 insertions(+), 25 deletions(-) Dave Airlie (1): drm: stop information leak of old kernel stack. Greg Kroah-Hartman (2): USB: io_ti: check firmware version before updating Linux 2.6.27.53 Jan Beulich (1): fixes for using make 3.82 Oliver Hartkopp (1): can: add limit for nframes and clean up signed/unsigned variables Ross Burton (1): USB: add device IDs for igotu to navman Russell King (1): ARM: Tighten check for allowable CPSR values Sam Ravnborg (1): kbuild: fix make incompatibility Stephen Smalley (1): selinux: use default proc sid on symlinks ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Linux 2.6.27.53 2010-08-26 23:56 ` Linux 2.6.27.53 Greg KH @ 2010-08-26 23:59 ` Greg KH 0 siblings, 0 replies; 4+ messages in thread From: Greg KH @ 2010-08-26 23:59 UTC (permalink / raw) To: linux-kernel, Andrew Morton, torvalds, stable, lwn diff --git a/Makefile b/Makefile index 948de60..9447d9d 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 27 -EXTRAVERSION = .52 +EXTRAVERSION = .53 NAME = Trembling Tortoise # *DOCUMENTATION* @@ -440,7 +440,11 @@ ifeq ($(config-targets),1) include $(srctree)/arch/$(SRCARCH)/Makefile export KBUILD_DEFCONFIG -config %config: scripts_basic outputmakefile FORCE +config: scripts_basic outputmakefile FORCE + $(Q)mkdir -p include/linux include/config + $(Q)$(MAKE) $(build)=scripts/kconfig $@ + +%config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $(build)=scripts/kconfig $@ @@ -1602,7 +1606,11 @@ endif $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) # Modules -/ %/: prepare scripts FORCE +/: prepare scripts FORCE + $(cmd_crmodverdir) + $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ + $(build)=$(build-dir) +%/: prepare scripts FORCE $(cmd_crmodverdir) $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(build)=$(build-dir) diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h index b415c0e..1c0447e 100644 --- a/arch/arm/include/asm/ptrace.h +++ b/arch/arm/include/asm/ptrace.h @@ -124,15 +124,24 @@ struct pt_regs { */ static inline int valid_user_regs(struct pt_regs *regs) { - if (user_mode(regs) && (regs->ARM_cpsr & PSR_I_BIT) == 0) { - regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT); - return 1; + unsigned long mode = regs->ARM_cpsr & MODE_MASK; + + /* + * Always clear the F (FIQ) and A (delayed abort) bits + */ + regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT); + + if ((regs->ARM_cpsr & PSR_I_BIT) == 0) { + if (mode == USR_MODE) + return 1; + if (elf_hwcap & HWCAP_26BIT && mode == USR26_MODE) + return 1; } /* * Force CPSR to something logical... */ - regs->ARM_cpsr &= PSR_f | PSR_s | (PSR_x & ~PSR_A_BIT) | PSR_T_BIT | MODE32_BIT; + regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | PSR_T_BIT | MODE32_BIT; if (!(elf_hwcap & HWCAP_26BIT)) regs->ARM_cpsr |= USR_MODE; diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 452c2d8..debeb88 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -504,7 +504,9 @@ int drm_ioctl(struct inode *inode, struct file *filp, retcode = -EFAULT; goto err_i1; } - } + } else + memset(kdata, 0, _IOC_SIZE(cmd)); + retcode = func(dev, kdata, file_priv); if ((retcode == 0) && (cmd & IOC_OUT)) { diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c index 3ff4895..147e044 100644 --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c @@ -1156,7 +1156,7 @@ static int download_fw(struct edgeport_serial *serial) /* Check if we have an old version in the I2C and update if necessary */ - if (download_cur_ver != download_new_ver) { + if (download_cur_ver < download_new_ver) { dbg("%s - Update I2C dld from %d.%d to %d.%d", __func__, firmware_version->Ver_Major, diff --git a/drivers/usb/serial/navman.c b/drivers/usb/serial/navman.c index d673653..6177d09 100644 --- a/drivers/usb/serial/navman.c +++ b/drivers/usb/serial/navman.c @@ -24,6 +24,7 @@ static int debug; static struct usb_device_id id_table [] = { { USB_DEVICE(0x0a99, 0x0001) }, /* Talon Technology device */ + { USB_DEVICE(0x0df7, 0x0900) }, /* Mobile Action i-gotU */ { }, }; MODULE_DEVICE_TABLE(usb, id_table); diff --git a/firmware/Makefile b/firmware/Makefile index da75a6f..5c01761 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -75,7 +75,7 @@ fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) # Directories which we _might_ need to create, so we have a rule for them. -firmware-dirs := $(sort $(patsubst %,$(objtree)/$(obj)/%/,$(dir $(fw-external-y) $(fw-shipped-all)))) +firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all)))) quiet_cmd_mkdir = MKDIR $(patsubst $(objtree)/%,%,$@) cmd_mkdir = mkdir -p $@ diff --git a/net/can/bcm.c b/net/can/bcm.c index da0d426..be700a5 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -58,6 +58,13 @@ #include <net/sock.h> #include <net/net_namespace.h> +/* + * To send multiple CAN frame content within TX_SETUP or to filter + * CAN messages with multiplex index within RX_SETUP, the number of + * different filters is limited to 256 due to the one byte index value. + */ +#define MAX_NFRAMES 256 + /* use of last_frames[index].can_dlc */ #define RX_RECV 0x40 /* received data for this element */ #define RX_THR 0x80 /* element not been sent due to throttle feature */ @@ -86,15 +93,15 @@ struct bcm_op { struct list_head list; int ifindex; canid_t can_id; - int flags; + u32 flags; unsigned long frames_abs, frames_filtered; struct timeval ival1, ival2; struct hrtimer timer, thrtimer; ktime_t rx_stamp, kt_ival1, kt_ival2, kt_lastmsg; int rx_ifindex; - int count; - int nframes; - int currframe; + u32 count; + u32 nframes; + u32 currframe; struct can_frame *frames; struct can_frame *last_frames; struct can_frame sframe; @@ -173,7 +180,7 @@ static int bcm_read_proc(char *page, char **start, off_t off, len += snprintf(page + len, PAGE_SIZE - len, "rx_op: %03X %-5s ", op->can_id, bcm_proc_getifname(op->ifindex)); - len += snprintf(page + len, PAGE_SIZE - len, "[%d]%c ", + len += snprintf(page + len, PAGE_SIZE - len, "[%u]%c ", op->nframes, (op->flags & RX_CHECK_DLC)?'d':' '); if (op->kt_ival1.tv64) @@ -207,7 +214,7 @@ static int bcm_read_proc(char *page, char **start, off_t off, list_for_each_entry(op, &bo->tx_ops, list) { len += snprintf(page + len, PAGE_SIZE - len, - "tx_op: %03X %s [%d] ", + "tx_op: %03X %s [%u] ", op->can_id, bcm_proc_getifname(op->ifindex), op->nframes); @@ -288,7 +295,7 @@ static void bcm_send_to_user(struct bcm_op *op, struct bcm_msg_head *head, struct can_frame *firstframe; struct sockaddr_can *addr; struct sock *sk = op->sk; - int datalen = head->nframes * CFSIZ; + unsigned int datalen = head->nframes * CFSIZ; int err; skb = alloc_skb(sizeof(*head) + datalen, gfp_any()); @@ -466,7 +473,7 @@ static void bcm_rx_update_and_send(struct bcm_op *op, * bcm_rx_cmp_to_index - (bit)compares the currently received data to formerly * received data stored in op->last_frames[] */ -static void bcm_rx_cmp_to_index(struct bcm_op *op, int index, +static void bcm_rx_cmp_to_index(struct bcm_op *op, unsigned int index, struct can_frame *rxdata) { /* @@ -548,7 +555,7 @@ static int bcm_rx_thr_flush(struct bcm_op *op) int updated = 0; if (op->nframes > 1) { - int i; + unsigned int i; /* for MUX filter we start at index 1 */ for (i = 1; i < op->nframes; i++) { @@ -597,7 +604,7 @@ static void bcm_rx_handler(struct sk_buff *skb, void *data) { struct bcm_op *op = (struct bcm_op *)data; struct can_frame rxframe; - int i; + unsigned int i; /* disable timeout */ hrtimer_cancel(&op->timer); @@ -799,14 +806,15 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, { struct bcm_sock *bo = bcm_sk(sk); struct bcm_op *op; - int i, err; + unsigned int i; + int err; /* we need a real device to send frames */ if (!ifindex) return -ENODEV; - /* we need at least one can_frame */ - if (msg_head->nframes < 1) + /* check nframes boundaries - we need at least one can_frame */ + if (msg_head->nframes < 1 || msg_head->nframes > MAX_NFRAMES) return -EINVAL; /* check the given can_id */ @@ -966,6 +974,10 @@ static int bcm_rx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, msg_head->nframes = 0; } + /* the first element contains the mux-mask => MAX_NFRAMES + 1 */ + if (msg_head->nframes > MAX_NFRAMES + 1) + return -EINVAL; + if ((msg_head->flags & RX_RTR_FRAME) && ((msg_head->nframes != 1) || (!(msg_head->can_id & CAN_RTR_FLAG)))) diff --git a/scripts/mkmakefile b/scripts/mkmakefile index e65d8b3..278b64e 100644 --- a/scripts/mkmakefile +++ b/scripts/mkmakefile @@ -42,7 +42,9 @@ all: Makefile:; -\$(all) %/: all +\$(all): all @: +%/: all + @: EOF diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index e2d25da..750cb17 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -1290,7 +1290,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent /* Default to the fs superblock SID. */ isec->sid = sbsec->sid; - if (sbsec->proc) { + if (sbsec->proc && !S_ISLNK(inode->i_mode)) { struct proc_inode *proci = PROC_I(inode); if (proci->pde) { isec->sclass = inode_mode_to_security_class(inode->i_mode); ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-09-20 21:45 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-09-20 21:40 Linux 2.6.27.53 Greg KH 2010-09-20 21:40 ` Greg KH -- strict thread matches above, loose matches on Subject: below -- 2010-08-26 23:55 Og dreams of kernels Greg KH 2010-08-26 23:56 ` Linux 2.6.27.53 Greg KH 2010-08-26 23:59 ` Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox