Linux 2.6.32.39
Subsystems (13)
I'm announcing the release of the 2.6.32.39 kernel.
All users of the 2.6.32 series must upgrade.
The updated 2.6.32.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/longterm/linux-2.6.32.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/longterm/linux-2.6.32.y.git;a=summarythanks,
greg k-h
------------
MAINTAINERS | 1 Makefile | 2 arch/ia64/kernel/mca.c | 3 arch/ia64/sn/pci/tioca_provider.c | 2 arch/x86/include/asm/msr-index.h | 4 + arch/x86/include/asm/processor.h | 19 ++++++ arch/x86/kernel/cpu/amd.c | 88 +++++++++++++++++++++++++++++ arch/x86/kernel/process.c | 39 ------------ arch/x86/lib/semaphore_32.S | 2 drivers/media/video/sn9c102/sn9c102_core.c | 6 - drivers/net/usb/cdc-phonet.c | 9 -- drivers/usb/core/devices.c | 10 +-- drivers/usb/host/ehci-q.c | 15 ++-- drivers/usb/host/xhci-mem.c | 85 ++++++++++++++++++++-------- drivers/usb/host/xhci.h | 6 - drivers/usb/serial/ftdi_sio.c | 5 + drivers/usb/serial/ftdi_sio_ids.h | 12 +++ drivers/usb/serial/option.c | 12 +++ fs/cifs/connect.c | 2 fs/proc/base.c | 9 ++ fs/ramfs/file-nommu.c | 1 fs/ubifs/debug.c | 6 - fs/ubifs/file.c | 3 include/linux/pid.h | 2 kernel/pid.c | 5 + net/ax25/af_ax25.c | 2 net/rds/rdma.c | 11 +++ 27 files changed, 265 insertions(+), 96 deletions(-)
Alan Stern (1):
USB: EHCI: unlink unused QHs when the controller is stopped
Artem Bityutskiy (1):
UBIFS: fix oops when R/O file-system is fsync'ed
Bob Liu (1):
ramfs: fix memleak on no-mmu arch
Boris Ostrovsky (1):
x86, AMD: Set ARAT feature on AMD processors
Christian Simon (1):
USB: ftdi_sio: Added IDs for CTI USB Serial Devices
Dmitry Torokhov (3):
USB: fix formatting of SuperSpeed endpoints in /proc/bus/usb/devices
USB: xhci - fix unsafe macro definitions
USB: xhci - fix math in xhci_get_endpoint_interval()
Enrico Mioso (1):
USB: option: Add new ONDA vendor id and product id for ONDA MT825UP
Greg Kroah-Hartman (1):
Linux 2.6.32.39
Hans Rosenfeld (3):
x86, cpu: AMD errata checking framework x86, cpu: Clean up AMD erratum 400 workaround x86, cpu: Fix regression in AMD errata checking code
Jan Beulich (1):
x86: Fix a bogus unwind annotation in lib/semaphore_32.S
Jeff Layton (1):
cifs: always do is_path_accessible check in cifs_mount
Jeff Mahoney (2):
tioca: Fix assignment from incompatible pointer warnings mca.c: Fix cast from integer to pointer warning
Jiri Slaby (1):
NET: cdc-phonet, handle empty phonet header
Joerg Roedel (1):
x86, amd: Disable GartTlbWlkErr when BIOS forgets it
Johan Hovold (1):
USB: ftdi_sio: add PID for OCT DK201 docking station
Kees Cook (1):
net: ax25: fix information leak to userland harder
Linus Torvalds (3):
next_pidmap: fix overflow condition
proc: do proper range check on readdir offset
net: fix rds_iovec page count overflow
Marius B. Kotsbak (1):
USB: option: Added support for Samsung GT-B3730/GT-B3710 LTE USB modem.
Paul Friedrich (1):
USB: ftdi_sio: add ids for Hameg HO720 and HO730
Randy Dunlap (1):
MAINTAINERS: update STABLE BRANCH info
Vasiliy Kulikov (2):
video: sn9c102: world-wirtable sysfs files
UBIFS: restrict world-writable debugfs files
MAINTAINERS +0 -1
@@ -5010,7 +5010,6 @@ F: arch/alpha/kernel/srm_env.c STABLE BRANCH M: Greg Kroah-Hartman <[email protected]> -M: Chris Wright <[email protected]> L: [email protected] S: Maintained
Makefile +1 -1
@@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 -EXTRAVERSION = .38 +EXTRAVERSION = .39 NAME = Man-Eating Seals of Antiquity # *DOCUMENTATION*
arch/ia64/kernel/mca.c +2 -1
@@ -1850,7 +1850,8 @@ ia64_mca_cpu_init(void *cpu_data) data =mca_bootmem (); first_time =0 ; }else - data =__get_free_pages (GFP_KERNEL ,get_order (sz)); + data = (void *)__get_free_pages (GFP_KERNEL , +get_order (sz));if (!data)panic ("Could not allocate MCA memory for cpu %d\n" , cpu);
arch/ia64/sn/pci/tioca_provider.c +1 -1
@@ -517,7 +517,7 @@ tioca_dma_unmap(struct pci_dev *pdev, dma_addr_t bus_addr, int dir)* use the GART mapped mode. */ static u64 -tioca_dma_map (struct pci_dev *pdev,u64 paddr,size_t byte_count,int dma_flags) +tioca_dma_map (struct pci_dev *pdev,unsigned long paddr,size_t byte_count,int dma_flags) {u64 mapaddr;
arch/x86/include/asm/msr-index.h +4 -0
@@ -81,11 +81,15 @@#define MSR_IA32_MC0_ADDR 0x00000402#define MSR_IA32_MC0_MISC 0x00000403 +#define MSR_AMD64_MC0_MASK 0xc0010044 +#define MSR_IA32_MCx_CTL (x) (MSR_IA32_MC0_CTL + 4*(x))#define MSR_IA32_MCx_STATUS (x) (MSR_IA32_MC0_STATUS + 4*(x))#define MSR_IA32_MCx_ADDR (x) (MSR_IA32_MC0_ADDR + 4*(x))#define MSR_IA32_MCx_MISC (x) (MSR_IA32_MC0_MISC + 4*(x)) +#define MSR_AMD64_MCx_MASK (x) (MSR_AMD64_MC0_MASK + (x)) +/* These are consecutive and not in the normal 4er MCE bank block */ #define MSR_IA32_MC0_CTL2 0x00000280#define MSR_IA32_MCx_CTL2 (x) (MSR_IA32_MC0_CTL2 + (x))
arch/x86/include/asm/processor.h +19 -0
@@ -1029,4 +1029,23 @@ unsigned long calc_aperfmperf_ratio(struct aperfmperf *old, return ratio; } +/* +* AMD errata checking +*/ +#ifdef CONFIG_CPU_SUP_AMD +extern const int amd_erratum_400[]; +extern bool cpu_has_amd_erratum (const int *); + +#define AMD_LEGACY_ERRATUM (...) { -1, __VA_ARGS__, 0 } +#define AMD_OSVW_ERRATUM (osvw_id, ...) { osvw_id, __VA_ARGS__, 0 } +#define AMD_MODEL_RANGE (f, m_start, s_start, m_end, s_end) \ + ((f << 24) | (m_start << 16) | (s_start << 12) | (m_end << 4) | (s_end)) +#define AMD_MODEL_RANGE_FAMILY (range) (((range) >> 24) & 0xff) +#define AMD_MODEL_RANGE_START (range) (((range) >> 12) & 0xfff) +#define AMD_MODEL_RANGE_END (range) ((range) & 0xfff) + +#else +#define cpu_has_amd_erratum (x) (false) +#endif /* CONFIG_CPU_SUP_AMD */ +#endif /* _ASM_X86_PROCESSOR_H */
arch/x86/kernel/cpu/amd.c +88 -0
97 lines not on this page · raw message
arch/x86/kernel/process.c +2 -37
@@ -438,42 +438,6 @@ static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c)return (edx &MWAIT_EDX_C1 ); } -/* -* Check for AMD CPUs, where APIC timer interrupt does not wake up CPU from C1e. -* For more information see -* - Erratum #400 for NPT family 0xf and family 0x10 CPUs -* - Erratum #365 for family 0x11 (not affected because C1e not in use) -*/ -static int __cpuinit check_c1e_idle (const struct cpuinfo_x86 *c) -{ -u64 val; -if (c->x86_vendor !=X86_VENDOR_AMD ) - goto no_c1e_idle; - -/* Family 0x0f models < rev F do not have C1E */ -if (c->x86 ==0x0F && c->x86_model >=0x40 ) -return 1 ; - -if (c->x86 ==0x10 ) { -/* -* check OSVW bit for CPUs that are not affected -* by erratum #400 -*/ -if (cpu_has (c,X86_FEATURE_OSVW )) { -rdmsrl (MSR_AMD64_OSVW_ID_LENGTH , val); -if (val >=2 ) { -rdmsrl (MSR_AMD64_OSVW_STATUS , val); -if (!(val &BIT (1 ))) - goto no_c1e_idle; - } - } -return 1 ; - } - -no_c1e_idle: -return 0 ; -} -static cpumask_var_t c1e_mask;static int c1e_detected;
@@ -551,7 +515,8 @@ void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c)*/ printk (KERN_INFO "using mwait in idle threads.\n" ); pm_idle = mwait_idle; - }else if (check_c1e_idle (c)) { + }else if (cpu_has_amd_erratum (amd_erratum_400)) { +/* E400: APIC timer interrupt does not wake up CPU from C1e */ printk (KERN_INFO "using C1E aware idle routine\n" ); pm_idle = c1e_idle; }else
arch/x86/lib/semaphore_32.S +1 -1
@@ -36,7 +36,7 @@ */ #ifdef CONFIG_SMP ENTRY(__write_lock_failed) - CFI_STARTPROC simple + CFI_STARTPROC FRAME 2: LOCK_PREFIX addl $ RW_LOCK_BIAS,(%eax)
drivers/media/video/sn9c102/sn9c102_core.c +3 -3
@@ -1430,9 +1430,9 @@ static DEVICE_ATTR(i2c_reg, S_IRUGO | S_IWUSR, sn9c102_show_i2c_reg, sn9c102_store_i2c_reg); static DEVICE_ATTR(i2c_val, S_IRUGO | S_IWUSR, sn9c102_show_i2c_val, sn9c102_store_i2c_val); -static DEVICE_ATTR(green, S_IWUGO, NULL, sn9c102_store_green); -static DEVICE_ATTR(blue, S_IWUGO, NULL, sn9c102_store_blue); -static DEVICE_ATTR(red, S_IWUGO, NULL, sn9c102_store_red); +static DEVICE_ATTR(green, S_IWUSR, NULL, sn9c102_store_green); +static DEVICE_ATTR(blue, S_IWUSR, NULL, sn9c102_store_blue); +static DEVICE_ATTR(red, S_IWUSR, NULL, sn9c102_store_red); static DEVICE_ATTR(frame_header, S_IRUGO, sn9c102_show_frame_header, NULL);
drivers/net/usb/cdc-phonet.c +3 -6
@@ -325,13 +325,13 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id) {static const char ifname[] ="usbpn%d" ;const struct usb_cdc_union_desc *union_header =NULL ; -const struct usb_cdc_header_desc *phonet_header =NULL ;const struct usb_host_interface *data_desc;struct usb_interface *data_intf;struct usb_device *usbdev =interface_to_usbdev (intf);struct net_device *dev;struct usbpn_dev *pnd;u8 *data; +int phonet =0 ;int len, err; data = intf->altsetting->extra;
@@ -352,10 +352,7 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id) (struct usb_cdc_union_desc *)data;break ;case 0xAB : -if (phonet_header || dlen <5 ) -break ; - phonet_header = - (struct usb_cdc_header_desc *)data; + phonet =1 ;break ; } }
@@ -363,7 +360,7 @@ int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id) len -= dlen; } -if (!union_header || !phonet_header) +if (!union_header || !phonet)return -EINVAL ; data_intf =usb_ifnum_to_if (usbdev, union_header->bSlaveInterface0);
drivers/usb/core/devices.c +6 -4
@@ -211,7 +211,7 @@ static char *usb_dump_endpoint_descriptor(int speed, char *start, char *end,break ;case USB_ENDPOINT_XFER_INT : type ="Int." ; -if (speed ==USB_SPEED_HIGH ) +if (speed ==USB_SPEED_HIGH || speed ==USB_SPEED_SUPER ) interval =1 << (desc->bInterval -1 );else interval = desc->bInterval;
@@ -219,7 +219,8 @@ static char *usb_dump_endpoint_descriptor(int speed, char *start, char *end,default :/* "can't happen" */ return start; } - interval *= (speed ==USB_SPEED_HIGH ) ?125 :1000 ; + interval *= (speed ==USB_SPEED_HIGH || + speed ==USB_SPEED_SUPER ) ?125 :1000 ;if (interval %1000 ) unit ='u' ;else {
@@ -529,8 +530,9 @@ static ssize_t usb_device_dump(char __user **buffer, size_t *nbytes,if (level ==0 ) {int max; -/* high speed reserves 80%, full/low reserves 90% */ -if (usbdev->speed ==USB_SPEED_HIGH ) +/* super/high speed reserves 80%, full/low reserves 90% */ +if (usbdev->speed ==USB_SPEED_HIGH || + usbdev->speed ==USB_SPEED_SUPER ) max =800 ;else max =FRAME_TIME_MAX_USECS_ALLOC ;
drivers/usb/host/ehci-q.c +9 -6
@@ -1224,24 +1224,27 @@ static void start_unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh)static void scan_async (struct ehci_hcd *ehci) { +bool stopped;struct ehci_qh *qh;enum ehci_timer_action action =TIMER_IO_WATCHDOG ; ehci->stamp =ehci_readl (ehci, &ehci->regs->frame_index);timer_action_done (ehci,TIMER_ASYNC_SHRINK ); rescan: + stopped = !HC_IS_RUNNING (ehci_to_hcd (ehci)->state); qh = ehci->async->qh_next.qh;if (likely (qh !=NULL )) { do { /* clean any finished work for this qh */ - if (!list_empty (&qh->qtd_list) - && qh->stamp != ehci->stamp) { + if (!list_empty(&qh->qtd_list) && (stopped || + qh->stamp != ehci->stamp)) { int temp; /* unlinks could happen here; completion * reporting drops the lock. rescan using * the latest schedule, but don't rescan - * qhs we already finished (no looping). + * qhs we already finished (no looping) + * unless the controller is stopped. */ qh = qh_get (qh); qh->stamp = ehci->stamp;
@@ -1262,9 +1265,9 @@ rescan:*/ if (list_empty (&qh->qtd_list) && qh->qh_state ==QH_STATE_LINKED ) { -if (!ehci->reclaim - && ((ehci->stamp - qh->stamp) &0x1fff ) - >= (EHCI_SHRINK_FRAMES *8 )) +if (!ehci->reclaim && (stopped || + ((ehci->stamp - qh->stamp) &0x1fff ) + >=EHCI_SHRINK_FRAMES *8 ))start_unlink_async (ehci, qh);else action =TIMER_ASYNC_SHRINK ;
drivers/usb/host/xhci-mem.c +62 -23
108 lines not on this page · raw message
drivers/usb/host/xhci.h +3 -3
@@ -232,7 +232,7 @@ struct xhci_op_regs {* notification type that matches a bit set in this bit field. */ #define DEV_NOTE_MASK (0xffff) -#define ENABLE_DEV_NOTE (x) (1 << x) +#define ENABLE_DEV_NOTE (x) (1 << (x))/* Most of the device notification types should only be used for debug. * SW does need to pay attention to function wake notifications. */
@@ -579,11 +579,11 @@ struct xhci_ep_ctx {#define EP_STATE_STOPPED 3#define EP_STATE_ERROR 4/* Mult - Max number of burtst within an interval, in EP companion desc. */ -#define EP_MULT (p) ((p & 0x3) << 8) +#define EP_MULT (p) (((p) & 0x3) << 8)/* bits 10:14 are Max Primary Streams */ /* bit 15 is Linear Stream Array */ /* Interval - period between requests to an endpoint - 125u increments. */ -#define EP_INTERVAL (p) ((p & 0xff) << 16) +#define EP_INTERVAL (p) (((p) & 0xff) << 16)#define EP_INTERVAL_TO_UFRAMES (p) (1 << (((p) >> 16) & 0xff))/* ep_info2 bitmasks */
drivers/usb/serial/ftdi_sio.c +5 -0
@@ -155,6 +155,8 @@ static struct ftdi_sio_quirk ftdi_stmclite_quirk = {* /sys/bus/usb/ftdi_sio/new_id, then send patch/report! */ static struct usb_device_id id_table_combined [] = { + {USB_DEVICE (FTDI_VID ,FTDI_CTI_MINI_PID ) }, + {USB_DEVICE (FTDI_VID ,FTDI_CTI_NANO_PID ) }, {USB_DEVICE (FTDI_VID ,FTDI_AMC232_PID ) }, {USB_DEVICE (FTDI_VID ,FTDI_CANUSB_PID ) }, {USB_DEVICE (FTDI_VID ,FTDI_CANDAPTER_PID ) },
@@ -529,6 +531,7 @@ static struct usb_device_id id_table_combined [] = { { USB_DEVICE(SEALEVEL_VID, SEALEVEL_2803_8_PID) }, { USB_DEVICE(IDTECH_VID, IDTECH_IDT1221U_PID) }, { USB_DEVICE(OCT_VID, OCT_US101_PID) }, + { USB_DEVICE(OCT_VID, OCT_DK201_PID) }, { USB_DEVICE(FTDI_VID, FTDI_HE_TIRA1_PID), .driver_info = (kernel_ulong_t)&ftdi_HE_TIRA1_quirk }, { USB_DEVICE(FTDI_VID, FTDI_USB_UIRT_PID),
@@ -790,6 +793,8 @@ static struct usb_device_id id_table_combined [] = { { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(FTDI_VID, HAMEG_HO820_PID) }, + { USB_DEVICE(FTDI_VID, HAMEG_HO720_PID) }, + { USB_DEVICE(FTDI_VID, HAMEG_HO730_PID) }, { USB_DEVICE(FTDI_VID, HAMEG_HO870_PID) }, { USB_DEVICE(FTDI_VID, MJSG_GENERIC_PID) }, { USB_DEVICE(FTDI_VID, MJSG_SR_RADIO_PID) },
drivers/usb/serial/ftdi_sio_ids.h +12 -0
@@ -300,6 +300,8 @@* Hameg HO820 and HO870 interface (using VID 0x0403) */ #define HAMEG_HO820_PID 0xed74 +#define HAMEG_HO730_PID 0xed73 +#define HAMEG_HO720_PID 0xed72#define HAMEG_HO870_PID 0xed71/*
@@ -579,6 +581,7 @@/* Note: OCT US101 is also rebadged as Dick Smith Electronics (NZ) XH6381 */ /* Also rebadged as Dick Smith Electronics (Aus) XH6451 */ /* Also rebadged as SIIG Inc. model US2308 hardware version 1 */ +#define OCT_DK201_PID 0x0103/* OCT DK201 USB docking station */ #define OCT_US101_PID 0x0421/* OCT US101 USB to RS-232 */ /*
@@ -1147,3 +1150,12 @@#define QIHARDWARE_VID 0x20B7#define MILKYMISTONE_JTAGSERIAL_PID 0x0713 +/* +* CTI GmbH RS485 Converter http://www.cti-lean.com/ +*/ +/* USB-485-Mini*/ +#define FTDI_CTI_MINI_PID 0xF608 +/* USB-Nano-485*/ +#define FTDI_CTI_NANO_PID 0xF60B + +
drivers/usb/serial/option.c +12 -0
@@ -388,6 +388,16 @@ static int option_resume(struct usb_serial *serial);#define CELOT_VENDOR_ID 0x211f#define CELOT_PRODUCT_CT680M 0x6801 +/* ONDA Communication vendor id */ +#define ONDA_VENDOR_ID 0x1ee8 + +/* ONDA MT825UP HSDPA 14.2 modem */ +#define ONDA_MT825UP 0x000b + +/* Samsung products */ +#define SAMSUNG_VENDOR_ID 0x04e8 +#define SAMSUNG_PRODUCT_GT_B3730 0x6889 +static struct usb_device_id option_ids[] = { {USB_DEVICE (OPTION_VENDOR_ID ,OPTION_PRODUCT_COLT ) }, {USB_DEVICE (OPTION_VENDOR_ID ,OPTION_PRODUCT_RICOLA ) },
@@ -917,6 +927,8 @@ static struct usb_device_id option_ids[] = { { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) }, { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ + { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730/GT-B3710 LTE USB modem.*/ { } /* Terminating entry */ };MODULE_DEVICE_TABLE (usb, option_ids);
fs/cifs/connect.c +1 -1
@@ -2532,7 +2532,7 @@ try_mount_again: remote_path_check:/* check if a whole path (including prepath) is not remote */ -if (!rc && cifs_sb->prepathlen && tcon) { +if (!rc && tcon) {/* build_path_to_root works only when we have a valid tcon */ full_path =cifs_build_path_to_root (cifs_sb);if (full_path ==NULL ) {
fs/proc/base.c +7 -2
@@ -2806,11 +2806,16 @@ static int proc_pid_fill_cache(struct file *filp, void *dirent, filldir_t filldi/* for the /proc/ directory itself, after non-process stuff has been done */ int proc_pid_readdir (struct file * filp,void * dirent,filldir_t filldir) { -unsigned int nr = filp->f_pos -FIRST_PROCESS_ENTRY ; -struct task_struct *reaper =get_proc_task (filp->f_path.dentry->d_inode); +unsigned int nr; +struct task_struct *reaper;struct tgid_iter iter;struct pid_namespace *ns; +if (filp->f_pos >=PID_MAX_LIMIT +TGID_OFFSET ) + goto out_no_task; + nr = filp->f_pos -FIRST_PROCESS_ENTRY ; + + reaper =get_proc_task (filp->f_path.dentry->d_inode);if (!reaper) goto out_no_task;
fs/ramfs/file-nommu.c +1 -0
@@ -111,6 +111,7 @@ int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)SetPageDirty (page);unlock_page (page); +put_page (page); }return 0 ;
fs/ubifs/debug.c +3 -3
@@ -2691,19 +2691,19 @@ int dbg_debugfs_init_fs(struct ubifs_info *c) } fname ="dump_lprops" ; - dent =debugfs_create_file (fname,S_IWUGO , d->dfs_dir, c, &dfs_fops); + dent =debugfs_create_file (fname,S_IWUSR , d->dfs_dir, c, &dfs_fops);if (IS_ERR (dent)) goto out_remove; d->dfs_dump_lprops = dent; fname ="dump_budg" ; - dent =debugfs_create_file (fname,S_IWUGO , d->dfs_dir, c, &dfs_fops); + dent =debugfs_create_file (fname,S_IWUSR , d->dfs_dir, c, &dfs_fops);if (IS_ERR (dent)) goto out_remove; d->dfs_dump_budg = dent; fname ="dump_tnc" ; - dent =debugfs_create_file (fname,S_IWUGO , d->dfs_dir, c, &dfs_fops); + dent =debugfs_create_file (fname,S_IWUSR , d->dfs_dir, c, &dfs_fops);if (IS_ERR (dent)) goto out_remove; d->dfs_dump_tnc = dent;
fs/ubifs/file.c +3 -0
@@ -1311,6 +1311,9 @@ int ubifs_fsync(struct file *file, struct dentry *dentry, int datasync)dbg_gen ("syncing inode %lu" , inode->i_ino); +if (inode->i_sb->s_flags &MS_RDONLY ) +return 0 ; +/* * VFS has already synchronized dirty pages for this inode. Synchronize * the inode unless this is a 'datasync()' call.
include/linux/pid.h +1 -1
@@ -117,7 +117,7 @@ extern struct pid *find_vpid(int nr);*/ extern struct pid *find_get_pid (int nr);extern struct pid *find_ge_pid (int nr,struct pid_namespace *); -int next_pidmap (struct pid_namespace *pid_ns,int last); +int next_pidmap (struct pid_namespace *pid_ns,unsigned int last);extern struct pid *alloc_pid (struct pid_namespace *ns);extern void free_pid (struct pid *pid);
kernel/pid.c +4 -1
@@ -182,11 +182,14 @@ static int alloc_pidmap(struct pid_namespace *pid_ns)return -1 ; } -int next_pidmap (struct pid_namespace *pid_ns,int last) +int next_pidmap (struct pid_namespace *pid_ns,unsigned int last) {int offset;struct pidmap *map, *end; +if (last >=PID_MAX_LIMIT ) +return -1 ; + offset = (last +1 ) &BITS_PER_PAGE_MASK ; map = &pid_ns->pidmap[(last +1 )/BITS_PER_PAGE ]; end = &pid_ns->pidmap[PIDMAP_ENTRIES ];
net/ax25/af_ax25.c +1 -1
@@ -1391,7 +1391,7 @@ static int ax25_getname(struct socket *sock, struct sockaddr *uaddr,ax25_cb *ax25;int err =0 ; -memset (fsa,0 ,sizeof (fsa)); +memset (fsa,0 ,sizeof (*fsa));lock_sock (sk); ax25 =ax25_sk (sk);
net/rds/rdma.c +11 -0
@@ -473,6 +473,17 @@ static struct rds_rdma_op *rds_rdma_prepare(struct rds_sock *rs, max_pages =max (nr, max_pages); nr_pages += nr; + +/* +* nr for one entry in limited to (UINT_MAX>>PAGE_SHIFT)+1 +* so nr_pages cannot overflow without becoming bigger than +* INT_MAX first. If nr cannot overflow then max_pages should +* be ok. +*/ +if (nr_pages >INT_MAX ) { + ret = -EINVAL ; + goto out; + } } pages =kcalloc (max_pages,sizeof (struct page *),GFP_KERNEL );
Quoted 10 lines · you
I'm announcing the release of the 2.6.32.39 kernel.
All users of the 2.6.32 series must upgrade.
The updated 2.6.32.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/longterm/linux-2.6.32.y.git and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/longterm/linux-2.6.32.y.git;a=summarythanks,
Thank you Greg for doing this work.
Quoted 104 lines
greg k-h
------------
MAINTAINERS | 1 Makefile | 2 arch/ia64/kernel/mca.c | 3 arch/ia64/sn/pci/tioca_provider.c | 2 arch/x86/include/asm/msr-index.h | 4 + arch/x86/include/asm/processor.h | 19 ++++++ arch/x86/kernel/cpu/amd.c | 88 +++++++++++++++++++++++++++++ arch/x86/kernel/process.c | 39 ------------ arch/x86/lib/semaphore_32.S | 2 drivers/media/video/sn9c102/sn9c102_core.c | 6 - drivers/net/usb/cdc-phonet.c | 9 -- drivers/usb/core/devices.c | 10 +-- drivers/usb/host/ehci-q.c | 15 ++-- drivers/usb/host/xhci-mem.c | 85 ++++++++++++++++++++-------- drivers/usb/host/xhci.h | 6 - drivers/usb/serial/ftdi_sio.c | 5 + drivers/usb/serial/ftdi_sio_ids.h | 12 +++ drivers/usb/serial/option.c | 12 +++ fs/cifs/connect.c | 2 fs/proc/base.c | 9 ++ fs/ramfs/file-nommu.c | 1 fs/ubifs/debug.c | 6 - fs/ubifs/file.c | 3 include/linux/pid.h | 2 kernel/pid.c | 5 + net/ax25/af_ax25.c | 2 net/rds/rdma.c | 11 +++ 27 files changed, 265 insertions(+), 96 deletions(-)Alan Stern (1):
USB: EHCI: unlink unused QHs when the controller is stoppedArtem Bityutskiy (1):
UBIFS: fix oops when R/O file-system is fsync'edBob Liu (1):
ramfs: fix memleak on no-mmu archBoris Ostrovsky (1):
x86, AMD: Set ARAT feature on AMD processorsChristian Simon (1):
USB:ftdi_sio: Added IDs for CTI USB Serial DevicesDmitry Torokhov (3):
USB: fix formatting of SuperSpeed endpoints in/proc/bus/usb/devices
USB: xhci - fix unsafe macro definitions
USB: xhci - fix math inxhci_get_endpoint_interval()Enrico Mioso (1):
USB: option: Add new ONDA vendor id and product id for ONDA MT825UPGreg Kroah-Hartman (1):
Linux 2.6.32.39Hans Rosenfeld (3):
x86, cpu: AMD errata checking framework x86, cpu: Clean up AMD erratum 400 workaround x86, cpu: Fix regression in AMD errata checking codeJan Beulich (1):
x86: Fix a bogus unwind annotation inlib/semaphore_32.SJeff Layton (1):
cifs: always dois_path_accessiblecheck incifs_mountJeff Mahoney (2):
tioca: Fix assignment from incompatible pointer warningsmca.c: Fix cast from integer to pointer warningJiri Slaby (1):
NET: cdc-phonet, handle empty phonet headerJoerg Roedel (1):
x86, amd: Disable GartTlbWlkErr when BIOS forgets itJohan Hovold (1):
USB:ftdi_sio: add PID for OCT DK201 docking stationKees Cook (1):
net: ax25: fix information leak to userland harderLinus Torvalds (3):
next_pidmap: fix overflow condition
proc: do proper range check on readdir offset
net: fixrds_iovecpage count overflowMarius B. Kotsbak (1):
USB: option: Added support for Samsung GT-B3730/GT-B3710 LTE USB modem.Paul Friedrich (1):
USB:ftdi_sio: add ids for Hameg HO720 and HO730Randy Dunlap (1):
MAINTAINERS: update STABLE BRANCH infoVasiliy Kulikov (2):
video: sn9c102: world-wirtable sysfs files
UBIFS: restrict world-writable debugfs files