Linux 2.6.32.30
Subsystems (50)
I'm announcing the release of the 2.6.32.30 kernel.
All users of the 2.6.32 kernel series must upgrade.
Many thanks again to Maximilian Attems who dug around in a lot of different distro kernels and forwarded to me the original git commit ids that should be applied to this tree. Red Hat didn't make this very easy due to their "one giant patch" format, and his skill is helping everyone out here. It's much appreciated.
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
------------
Makefile | 2 arch/arm/kernel/signal.c | 4 arch/s390/include/asm/processor.h | 5 arch/s390/kernel/traps.c | 37 --- arch/x86/include/asm/acpi.h | 1 arch/x86/include/asm/pvclock.h | 1 arch/x86/kernel/acpi/boot.c | 14 + arch/x86/kernel/early-quirks.c | 16 - arch/x86/kernel/hpet.c | 12 + arch/x86/kernel/pvclock.c | 5 arch/x86/xen/time.c | 2 drivers/block/pktcdvd.c | 2 drivers/isdn/hisax/config.c | 18 + drivers/isdn/hisax/hisax.h | 1 drivers/md/dm-raid1.c | 2 drivers/md/dm-region-hash.c | 5 drivers/md/md.c | 3 drivers/media/dvb/ttpci/av7110_ca.c | 2 drivers/media/radio/radio-aimslab.c | 1 drivers/message/fusion/mptctl.c | 8 drivers/message/fusion/mptscsih.c | 7 drivers/net/benet/be.h | 2 drivers/net/benet/be_main.c | 18 - drivers/net/bonding/bond_ipv6.c | 9 drivers/net/ixgbe/ixgbe_82599.c | 1 drivers/net/ixgbe/ixgbe_main.c | 3 drivers/net/ixgbe/ixgbe_type.h | 1 drivers/net/wireless/p54/p54pci.c | 14 - drivers/platform/x86/acer-wmi.c | 4 drivers/platform/x86/asus_acpi.c | 8 drivers/platform/x86/tc1100-wmi.c | 2 drivers/scsi/device_handler/scsi_dh_alua.c | 2 drivers/staging/usbip/vhci.h | 6 drivers/staging/usbip/vhci_hcd.c | 54 ++++- drivers/staging/usbip/vhci_rx.c | 15 - drivers/usb/core/hcd-pci.c | 4 drivers/usb/core/quirks.c | 8 drivers/usb/host/ohci-hcd.c | 9 drivers/usb/host/ohci-pci.c | 18 + drivers/usb/host/ohci.h | 1 drivers/usb/host/pci-quirks.c | 18 + drivers/usb/host/xhci-ring.c | 36 ++- drivers/usb/musb/omap2430.c | 1 drivers/usb/serial/sierra.c | 3 drivers/usb/serial/visor.c | 12 + fs/ecryptfs/inode.c | 2 fs/eventpoll.c | 95 +++++++++ fs/file_table.c | 2 fs/gfs2/bmap.c | 2 fs/nfs/file.c | 2 fs/nfsd/nfs4xdr.c | 8 fs/nfsd/vfs.c | 2 fs/ocfs2/stack_user.c | 2 fs/partitions/ldm.c | 5 fs/partitions/mac.c | 17 - fs/proc/array.c | 5 fs/read_write.c | 2 fs/splice.c | 24 +- fs/xfs/linux-2.6/xfs_export.c | 11 - fs/xfs/linux-2.6/xfs_ioctl.c | 7 fs/xfs/linux-2.6/xfs_ioctl32.c | 15 - fs/xfs/quota/xfs_qm.c | 18 - fs/xfs/quota/xfs_qm_syscalls.c | 27 +- fs/xfs/xfs_ialloc.c | 150 ++++++++------- fs/xfs/xfs_iget.c | 10 - fs/xfs/xfs_inode.c | 5 fs/xfs/xfs_inode.h | 6 fs/xfs/xfs_itable.c | 284 ++++------------------------- fs/xfs/xfs_itable.h | 17 - fs/xfs/xfs_log_recover.c | 2 fs/xfs/xfs_mount.c | 2 fs/xfs/xfs_rtalloc.c | 4 fs/xfs/xfs_trans_inode.c | 2 fs/xfs/xfs_vnodeops.c | 2 include/linux/cred.h | 21 -- kernel/cred.c | 41 +++- kernel/irq/manage.c | 2 kernel/power/snapshot.c | 7 lib/swiotlb.c | 6 net/core/filter.c | 64 +++--- net/ipv4/tcp.c | 2 net/sctp/auth.c | 8 net/sunrpc/cache.c | 4 net/x25/x25_link.c | 4 security/selinux/hooks.c | 6 sound/pci/hda/hda_intel.c | 1 sound/usb/caiaq/audio.c | 2 sound/usb/caiaq/midi.c | 2 88 files changed, 669 insertions(+), 628 deletions(-)
Ajit Khaparde (1):
be2net: Maintain tx and rx counters in driver
Alan Stern (2):
OHCI: work around for nVidia shutdown problem
USB: add quirks entry for Keytouch QWERTY Panel
Andreas Herrmann (1):
x86 quirk: Fix polarity for IRQ0 pin2 override on SB800 systems
Apollon Oikonomopoulos (1):
x25: decrement netdev reference counts on unload
Ben Hutchings (1):
bonding/vlan: Avoid mangled NAs on slaves without VLAN tag insertion
Brian King (1):
scsi_dh_alua: Add IBM Power Virtual SCSI ALUA device to dev list
Changli Gao (1):
sendfile(): check f_op.splice_write() rather than f_op.sendpage()
Christian Lamparter (1):
p54pci: update receive dma buffers before and after processing
Christoph Hellwig (1):
xfs: always use iget in bulkstat
Dan Carpenter (1):
av7110: check for negative array offset
Dan Rosenberg (2):
sctp: Fix out-of-bounds reading in sctp_asoc_get_hmac() Fix pktcdvd ioctl dev_minor range check
Dave Chinner (4):
xfs: validate untrusted inode numbers during lookup
xfs: rename XFS_IGET_BULKSTAT to XFS_IGET_UNTRUSTED
xfs: remove block number from inode lookup code
xfs: fix untrusted inode number lookup
David Henningsson (1):
ALSA: HDA: Add position_fix quirk for an Asus device
David Howells (1):
CRED: Fix get_task_cred() and task_state() to not resurrect dead credentials
David S. Miller (4):
filter: make sure filters dont read uninitialized memory
tcp: Increase TCP_MAXSEG socket option minimum.
tcp: Make TCP_MAXSEG minimum more correct.
x25: Do not reference freed memory.
Davide Libenzi (1):
epoll: prevent creating circular epoll structures
Don Skidmore (1):
ixgbe: add support for 82599 based Express Module X520-P2
FUJITA Tomonori (1):
swiotlb: fix wrong panic
Geert Uytterhoeven (1):
radio-aimslab.c needs #include <linux/delay.h>
Greg Kroah-Hartman (1):
Linux 2.6.32.30
J. R. Okajima (1):
NFS: fix the return value of nfs_file_fsync()
Jeremy Fitzhardinge (1):
x86/pvclock: Zero last_value on resume
Johan Hovold (1):
usb: musb: omap2430: fix kernel panic on reboot
Jon Thomas (1):
sierra: add new ID for Airprime/Sierra USB IP modem
Kashyap, Desai (2):
mptfusion: mptctl_release is required in mptctl.c
mptfusion: Fix Incorrect return value in mptscsih_dev_reset
Konstantin Khorenko (1):
NFSD: memory corruption due to writing beyond the stat array
Li Zefan (1):
sunrpc/cache: fix module refcnt leak in a failure path
Maciej Szmigiero (2):
USB: Add Samsung SGH-I500/Android modem ID switch to visor driver
USB: Add quirk for Samsung Android phone modem
Martin Schwidefsky (1):
s390: remove task_show_regs
Matthew Garrett (1):
acer-wmi: Fix capitalisation of GUID
Max Vozeler (4):
staging: usbip: vhci: update reference count for usb_device
staging: usbip: vhci: give back URBs from in-flight unlink requests
staging: usbip: vhci: refuse to enqueue for dead connections
staging: usbip: vhci: use urb->dev->portnum to find port
Mike Christie (1):
scsi_dh_alua: add netapp to dev list
Mikulas Patocka (1):
dm raid1: fail writes if errors are not handled and log fails
Milton Miller (1):
ixgbe: prevent speculative processing of descriptors before ready
NeilBrown (2):
nfsd: correctly handle return value from nfsd_map_name_to_*
md: correctly handle probe of an 'mdp' device.
Paul Zimmerman (4):
xhci: Avoid BUG() in interrupt context
xhci: Clarify some expressions in the TRB math
xhci: Fix errors in the running total calculations in the TRB math
xhci: Fix an error in count_sg_trbs_needed()
Russell King (1):
ARM: Ensure predictable endian state on signal handler entry
Shaohua Li (1):
x86, hpet: Disable per-cpu hpet timer if ARAT is supported
Stanislaw Gruszka (1):
PM / Hibernate: Return error code when alloc_image_page() fails
Steven Whitehouse (1):
GFS2: Fix bmap allocation corner-case bug
Takahiro Yasui (1):
dm raid1: fix null pointer dereference in suspend
Takashi Iwai (1):
ALSA: caiaq - Fix possible string-buffer overflow
Tetsuo Handa (3):
CRED: Fix kernel panic upon security_file_alloc() failure.
CRED: Fix BUG() upon security_cred_alloc_blank() failure
CRED: Fix memory and refcount leaks upon security_prepare_creds() failure
Thomas Gleixner (2):
isdn: hisax: Replace the bogus access to irq stats
genirq: Disable the SHIRQ_DEBUG call in request_threaded_irq for now
Timo Warns (2):
fs/partitions: Validate map_count in Mac partition tables
ldm: corrupted partition table can cause kernel oops
Tyler Hicks (1):
eCryptfs: Copy up lower inode attrs in getattr
Vasiliy Kulikov (3):
platform: x86: acer-wmi: world-writable sysfs threeg file
platform: x86: asus_acpi: world-writable procfs files
platform: x86: tc1100-wmi: world-writable sysfs wireless and jogdial files
dann frazier (1):
ocfs2_connection_find() returns pointer to bad structure
Makefile +1 -1
@@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 -EXTRAVERSION = .29 +EXTRAVERSION = .30 NAME = Man-Eating Seals of Antiquity # *DOCUMENTATION*
arch/arm/kernel/signal.c +3 -1
@@ -389,7 +389,9 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,unsigned long handler = (unsigned long )ka->sa.sa_handler;unsigned long retcode;int thumb =0 ; -unsigned long cpsr = regs->ARM_cpsr & ~PSR_f; +unsigned long cpsr = regs->ARM_cpsr & ~(PSR_f |PSR_E_BIT ); + + cpsr |=PSR_ENDSTATE ;/* * Maybe we need to deliver a 32-bit signal to a 26-bit task.
arch/s390/include/asm/processor.h +0 -5
@@ -150,11 +150,6 @@ extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);*/ extern unsigned long thread_saved_pc (struct task_struct *t); -/* -* Print register of task into buffer. Used in fs/proc/array.c. -*/ -extern void task_show_regs (struct seq_file *m,struct task_struct *task); -extern void show_code (struct pt_regs *regs);unsigned long get_wchan (struct task_struct *p);
arch/s390/kernel/traps.c +0 -37
@@ -243,43 +243,6 @@ void show_regs(struct pt_regs *regs)show_last_breaking_event (regs); } -/* This is called from fs/proc/array.c */ -void task_show_regs (struct seq_file *m,struct task_struct *task) -{ -struct pt_regs *regs; - - regs =task_pt_regs (task); -seq_printf (m,"task: %p, ksp: %p\n" , - task, (void *)task->thread.ksp); -seq_printf (m,"User PSW : %p %p\n" , - (void *) regs->psw.mask, (void *)regs->psw.addr); - -seq_printf (m,"User GPRS: " FOURLONG , - regs->gprs[0 ], regs->gprs[1 ], - regs->gprs[2 ], regs->gprs[3 ]); -seq_printf (m," " FOURLONG , - regs->gprs[4 ], regs->gprs[5 ], - regs->gprs[6 ], regs->gprs[7 ]); -seq_printf (m," " FOURLONG , - regs->gprs[8 ], regs->gprs[9 ], - regs->gprs[10 ], regs->gprs[11 ]); -seq_printf (m," " FOURLONG , - regs->gprs[12 ], regs->gprs[13 ], - regs->gprs[14 ], regs->gprs[15 ]); -seq_printf (m,"User ACRS: %08x %08x %08x %08x\n" , - task->thread.acrs[0 ], task->thread.acrs[1 ], - task->thread.acrs[2 ], task->thread.acrs[3 ]); -seq_printf (m," %08x %08x %08x %08x\n" , - task->thread.acrs[4 ], task->thread.acrs[5 ], - task->thread.acrs[6 ], task->thread.acrs[7 ]); -seq_printf (m," %08x %08x %08x %08x\n" , - task->thread.acrs[8 ], task->thread.acrs[9 ], - task->thread.acrs[10 ], task->thread.acrs[11 ]); -seq_printf (m," %08x %08x %08x %08x\n" , - task->thread.acrs[12 ], task->thread.acrs[13 ], - task->thread.acrs[14 ], task->thread.acrs[15 ]); -} -static DEFINE_SPINLOCK (die_lock);void die (const char * str,struct pt_regs * regs,long err)
arch/x86/include/asm/acpi.h +1 -0
@@ -89,6 +89,7 @@ extern int acpi_ht;extern int acpi_pci_disabled;extern int acpi_skip_timer_override;extern int acpi_use_timer_override; +extern int acpi_fix_pin2_polarity;extern u8 acpi_sci_flags;extern int acpi_sci_override_gsi;
arch/x86/include/asm/pvclock.h +1 -0
@@ -10,5 +10,6 @@ unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src);void pvclock_read_wallclock (struct pvclock_wall_clock *wall,struct pvclock_vcpu_time_info *vcpu,struct timespec *ts); +void pvclock_resume (void );#endif /* _ASM_X86_PVCLOCK_H */
arch/x86/kernel/acpi/boot.c +10 -4
@@ -70,6 +70,7 @@ u8 acpi_sci_flags __initdata;int acpi_sci_override_gsi__initdata ;int acpi_skip_timer_override__initdata ;int acpi_use_timer_override__initdata ; +int acpi_fix_pin2_polarity__initdata ;#ifdef CONFIG_X86_LOCAL_APIC static u64 acpi_lapic_addr__initdata =APIC_DEFAULT_PHYS_BASE ;
@@ -360,10 +361,15 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,return 0 ; } -if (acpi_skip_timer_override && - intsrc->source_irq ==0 && intsrc->global_irq ==2 ) { -printk (PREFIX "BIOS IRQ0 pin2 override ignored.\n" ); -return 0 ; +if (intsrc->source_irq ==0 && intsrc->global_irq ==2 ) { +if (acpi_skip_timer_override) { +printk (PREFIX "BIOS IRQ0 pin2 override ignored.\n" ); +return 0 ; + } +if (acpi_fix_pin2_polarity && (intsrc->inti_flags &ACPI_MADT_POLARITY_MASK )) { + intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK ; +printk (PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n" ); + } } mp_override_legacy_irq(intsrc->source_irq,
arch/x86/kernel/early-quirks.c +7 -9
@@ -145,15 +145,10 @@ static void __init ati_bugs(int num, int slot, int func)static u32 __init ati_sbx00_rev (int num,int slot,int func) { -u32 old, d; +u32 d; - d =read_pci_config (num, slot, func,0x70 ); - old = d; - d &= ~(1 <<8 ); -write_pci_config (num, slot, func,0x70 , d); d =read_pci_config (num, slot, func,0x8 ); d &=0xff ; -write_pci_config (num, slot, func,0x70 , old);return d; }
@@ -162,13 +157,16 @@ static void __init ati_bugs_contd(int num, int slot, int func) {u32 d, rev; -if (acpi_use_timer_override) -return ; - rev =ati_sbx00_rev (num, slot, func); +if (rev >=0x40 ) + acpi_fix_pin2_polarity =1 ; +if (rev >0x13 )return ; +if (acpi_use_timer_override) +return ; +/* check for IRQ0 interrupt swap */ d =read_pci_config (num, slot, func,0x64 );if (!(d & (1 <<14 )))
arch/x86/kernel/hpet.c +10 -2
@@ -606,6 +606,8 @@ static void hpet_msi_capability_lookup(unsigned int start_timer)if (hpet_msi_disable)return ; +if (boot_cpu_has (X86_FEATURE_ARAT )) +return ; id =hpet_readl (HPET_ID ); num_timers = ((id &HPET_ID_NUMBER ) >>HPET_ID_NUMBER_SHIFT );
@@ -894,10 +896,8 @@ int __init hpet_enable(void)if (id &HPET_ID_LEGSUP ) {hpet_legacy_clockevent_register (); -hpet_msi_capability_lookup (2 );return 1 ; } -hpet_msi_capability_lookup (0 );return 0 ; out_nohpet:
@@ -930,12 +930,20 @@ static __init int hpet_late_init(void)if (!hpet_virt_address)return -ENODEV ; +if (hpet_readl (HPET_ID ) &HPET_ID_LEGSUP ) +hpet_msi_capability_lookup (2 ); +else +hpet_msi_capability_lookup (0 ); +hpet_reserve_platform_timers (hpet_readl (HPET_ID ));hpet_print_config ();if (hpet_msi_disable)return 0 ; +if (boot_cpu_has (X86_FEATURE_ARAT )) +return 0 ; +for_each_online_cpu (cpu) {hpet_cpuhp_notify (NULL ,CPU_ONLINE , (void *)(long )cpu); }
arch/x86/kernel/pvclock.c +5 -0
@@ -111,6 +111,11 @@ unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src)static atomic64_t last_value =ATOMIC64_INIT (0 ); +void pvclock_resume (void ) +{ +atomic64_set (&last_value,0 ); +} +cycle_t pvclock_clocksource_read (struct pvclock_vcpu_time_info *src) {struct pvclock_shadow_time shadow;
arch/x86/xen/time.c +2 -0
@@ -424,6 +424,8 @@ void xen_timer_resume(void) {int cpu; +pvclock_resume (); +if (xen_clockevent != &xen_vcpuop_clockevent)return ;
drivers/block/pktcdvd.c +1 -1
@@ -2408,7 +2408,7 @@ static void pkt_release_dev(struct pktcdvd_device *pd, int flush)pkt_shrink_pktlist (pd); } -static struct pktcdvd_device *pkt_find_dev_from_minor (int dev_minor) +static struct pktcdvd_device *pkt_find_dev_from_minor (unsigned int dev_minor) {if (dev_minor >=MAX_WRITERS )return NULL ;
drivers/isdn/hisax/config.c +14 -4
@@ -800,6 +800,16 @@ static void closecard(int cardnr)ll_unload (csta); } +static irqreturn_t card_irq (int intno,void *dev_id) +{ +struct IsdnCardState *cs = dev_id; +irqreturn_t ret = cs->irq_func (intno, cs); + +if (ret ==IRQ_HANDLED ) + cs->irq_cnt++; +return ret; +} +static int init_card (struct IsdnCardState *cs) {int irq_cnt, cnt =3 , ret;
@@ -808,10 +818,10 @@ static int init_card(struct IsdnCardState *cs) ret = cs->cardmsg (cs,CARD_INIT ,NULL );return (ret); } - irq_cnt =kstat_irqs (cs->irq); + irq_cnt = cs->irq_cnt =0 ;printk (KERN_INFO "%s: IRQ %d count %d\n" , CardType[cs->typ], cs->irq, irq_cnt); -if (request_irq (cs->irq, cs->irq_func, cs->irq_flags,"HiSax" , cs)) { +if (request_irq (cs->irq, card_irq, cs->irq_flags,"HiSax" , cs)) {printk (KERN_WARNING "HiSax: couldn't get interrupt %d\n" , cs->irq);return 1 ;
@@ -821,8 +831,8 @@ static int init_card(struct IsdnCardState *cs)/* Timeout 10ms */ msleep (10 );printk (KERN_INFO "%s: IRQ %d count %d\n" , - CardType[cs->typ], cs->irq,kstat_irqs (cs->irq)); -if (kstat_irqs (cs->irq) == irq_cnt) { + CardType[cs->typ], cs->irq, cs->irq_cnt); +if (cs->irq_cnt == irq_cnt) {printk (KERN_WARNING "%s: IRQ(%d) getting no interrupts during init %d\n" , CardType[cs->typ], cs->irq,4 - cnt);
drivers/isdn/hisax/hisax.h +1 -0
@@ -959,6 +959,7 @@ struct IsdnCardState {u_long event;struct work_struct tqueue;struct timer_list dbusytimer; +unsigned int irq_cnt;#ifdef ERROR_STATISTIC int err_crc;int err_tx;
drivers/md/dm-raid1.c +1 -1
@@ -659,7 +659,7 @@ static void do_writes(struct mirror_set *ms, struct bio_list *writes)/* * Dispatch io. */ -if (unlikely (ms->log_failure)) { +if (unlikely (ms->log_failure) &&errors_handled (ms)) {spin_lock_irq (&ms->lock);bio_list_merge (&ms->failures, &sync);spin_unlock_irq (&ms->lock);
drivers/md/dm-region-hash.c +2 -3
@@ -643,10 +643,9 @@ void dm_rh_recovery_end(struct dm_region *reg, int success)spin_lock_irq (&rh->region_lock);if (success)list_add (®->list, ®->rh->recovered_regions); -else { - reg->state =DM_RH_NOSYNC ; +else list_add (®->list, ®->rh->failed_recovered_regions); - } +spin_unlock_irq (&rh->region_lock); rh->wakeup_workers (rh->context);
drivers/md/md.c +3 -0
@@ -305,6 +305,9 @@ static mddev_t * mddev_find(dev_t unit) {mddev_t *mddev, *new =NULL ; +if (unit &&MAJOR (unit) !=MD_MAJOR ) + unit &= ~((1 <<MdpMinorShift)-1 ); + retry:spin_lock (&all_mddevs_lock);
drivers/media/dvb/ttpci/av7110_ca.c +1 -1
@@ -277,7 +277,7 @@ static int dvb_ca_ioctl(struct inode *inode, struct file *file, {ca_slot_info_t *info=(ca_slot_info_t *)parg; -if (info->num >1 ) +if (info->num <0 || info->num >1 )return -EINVAL ; av7110->ci_slot[info->num].num = info->num; av7110->ci_slot[info->num].type = FW_CI_LL_SUPPORT(av7110->arm_app) ?
drivers/media/radio/radio-aimslab.c +1 -0
@@ -31,6 +31,7 @@#include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ #include <linux/ioport.h> /* request_region */ +#include <linux/delay.h> /* msleep */ #include <linux/videodev2.h> /* kernel radio structs */ #include <linux/version.h> /* for KERNEL_VERSION MACRO */ #include <linux/io.h> /* outb, outb_p */
drivers/message/fusion/mptctl.c +8 -0
@@ -577,6 +577,13 @@ mptctl_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply) }static int +mptctl_release (struct inode *inode,struct file *filep) +{ +fasync_helper (-1 , filep,0 , &async_queue); +return 0 ; +} + +static int mptctl_fasync (int fd,struct file *filep,int mode) {MPT_ADAPTER *ioc;
@@ -2778,6 +2785,7 @@ static const struct file_operations mptctl_fops = { .llseek = no_llseek, .fasync = mptctl_fasync, .unlocked_ioctl = mptctl_ioctl, + .release = mptctl_release,#ifdef CONFIG_COMPAT .compat_ioctl = compat_mpctl_ioctl,#endif
drivers/message/fusion/mptscsih.c +4 -3
@@ -1835,8 +1835,9 @@ mptscsih_abort(struct scsi_cmnd * SCpnt) } out: -printk (MYIOC_s_INFO_FMT"task abort: %s (sc=%p)\n" , - ioc->name, ((retval ==SUCCESS ) ?"SUCCESS" :"FAILED" ), SCpnt); +printk (MYIOC_s_INFO_FMT"task abort: %s (rv=%04x) (sc=%p) (sn=%ld)\n" , + ioc->name, ((retval ==SUCCESS ) ?"SUCCESS" :"FAILED" ), retval, + SCpnt, SCpnt->serial_number);return retval; }
@@ -1873,7 +1874,7 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt) vdevice = SCpnt->device->hostdata;if (!vdevice || !vdevice->vtarget) { - retval =SUCCESS ; + retval =0 ; goto out; }
drivers/net/benet/be.h +2 -0
@@ -165,6 +165,7 @@ struct be_drvr_stats {ulong be_tx_jiffies;u64 be_tx_bytes;u64 be_tx_bytes_prev; +u64 be_tx_pkts;u32 be_tx_rate;u32 cache_barrier[16 ];
@@ -176,6 +177,7 @@ struct be_drvr_stats {ulong be_rx_jiffies;u64 be_rx_bytes;u64 be_rx_bytes_prev; +u64 be_rx_pkts;u32 be_rx_rate;/* number of non ether type II frames dropped where * frame len > length field of Mac Hdr */
drivers/net/benet/be_main.c +9 -9
@@ -146,13 +146,10 @@ void netdev_stats_update(struct be_adapter *adapter)struct net_device_stats *dev_stats = &adapter->stats.net_stats;struct be_erx_stats *erx_stats = &hw_stats->erx; - dev_stats->rx_packets = port_stats->rx_total_frames; - dev_stats->tx_packets = port_stats->tx_unicastframes + - port_stats->tx_multicastframes + port_stats->tx_broadcastframes; - dev_stats->rx_bytes = (u64 ) port_stats->rx_bytes_msd <<32 | - (u64 ) port_stats->rx_bytes_lsd; - dev_stats->tx_bytes = (u64 ) port_stats->tx_bytes_msd <<32 | - (u64 ) port_stats->tx_bytes_lsd; + dev_stats->rx_packets =drvr_stats (adapter)->be_rx_pkts; + dev_stats->tx_packets =drvr_stats (adapter)->be_tx_pkts; + dev_stats->rx_bytes =drvr_stats (adapter)->be_rx_bytes; + dev_stats->tx_bytes =drvr_stats (adapter)->be_tx_bytes;/* bad pkts received */ dev_stats->rx_errors = port_stats->rx_crc_errors +
@@ -309,12 +306,13 @@ static void be_tx_rate_update(struct be_adapter *adapter) }static void be_tx_stats_update (struct be_adapter *adapter, -u32 wrb_cnt,u32 copied,bool stopped) +u32 wrb_cnt,u32 copied,u32 gso_segs,bool stopped) {struct be_drvr_stats *stats =drvr_stats (adapter); stats->be_tx_reqs++; stats->be_tx_wrbs += wrb_cnt; stats->be_tx_bytes += copied; + stats->be_tx_pkts += (gso_segs ? gso_segs :1 );if (stopped) stats->be_tx_stops++; }
@@ -462,7 +460,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,be_txq_notify (adapter, txq->id, wrb_cnt); -be_tx_stats_update (adapter, wrb_cnt, copied, stopped); +be_tx_stats_update (adapter, wrb_cnt, copied, +skb_shinfo (skb)->gso_segs, stopped); }else { txq->head = start;dev_kfree_skb_any (skb);
@@ -605,6 +604,7 @@ static void be_rx_stats_update(struct be_adapter *adapter, stats->be_rx_compl++; stats->be_rx_frags += numfrags; stats->be_rx_bytes += pktsize; + stats->be_rx_pkts++; }static inline bool do_pkt_csum (struct be_eth_rx_compl *rxcp,bool cso)
drivers/net/bonding/bond_ipv6.c +8 -1
@@ -66,6 +66,13 @@ static void bond_na_send(struct net_device *slave_dev, };struct sk_buff *skb; +/* The Ethernet header is built in ndisc_send_skb(), not +* ndisc_build_skb(), so we cannot insert a VLAN tag. Only an +* out-of-line tag inserted by the hardware will work. +*/ +if (vlan_id && !(slave_dev->features &NETIF_F_HW_VLAN_TX )) +return ; + icmp6h.icmp6_router = router; icmp6h.icmp6_solicited =0 ; icmp6h.icmp6_override =1 ;
@@ -84,7 +91,7 @@ static void bond_na_send(struct net_device *slave_dev, }if (vlan_id) { - skb =vlan_put_tag (skb, vlan_id); + skb =__vlan_hwaccel_put_tag (skb, vlan_id);if (!skb) {pr_err (DRV_NAME ": failed to insert VLAN tag\n" );return ;
drivers/net/ixgbe/ixgbe_82599.c +1 -0
@@ -338,6 +338,7 @@ static enum ixgbe_media_type ixgbe_get_media_type_82599(struct ixgbe_hw *hw) media_type = ixgbe_media_type_backplane;break ;case IXGBE_DEV_ID_82599_SFP : +case IXGBE_DEV_ID_82599_SFP_EM : media_type = ixgbe_media_type_fiber;break ;case IXGBE_DEV_ID_82599_CX4 :
drivers/net/ixgbe/ixgbe_main.c +3 -0
@@ -100,6 +100,8 @@ static struct pci_device_id ixgbe_pci_tbl[] = { board_82599 }, {PCI_VDEVICE (INTEL ,IXGBE_DEV_ID_82599_SFP ), board_82599 }, + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_EM), + board_82599 }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_KX4_MEZZ), board_82599 }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_CX4),
@@ -791,6 +793,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,break ; (*work_done)++; +rmb ();/* read descriptor and rx_buffer_info after status DD */ if (rx_ring->flags &IXGBE_RING_RX_PS_ENABLED ) { hdr_info =le16_to_cpu (ixgbe_get_hdr_info (rx_desc)); len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >>
drivers/net/ixgbe/ixgbe_type.h +1 -0
@@ -53,6 +53,7 @@#define IXGBE_DEV_ID_82599_KR 0x1517#define IXGBE_DEV_ID_82599_CX4 0x10F9#define IXGBE_DEV_ID_82599_SFP 0x10FB +#define IXGBE_DEV_ID_82599_SFP_EM 0x1507#define IXGBE_DEV_ID_82599_XAUI_LOM 0x10FC#define IXGBE_DEV_ID_82599_COMBO_BACKPLANE 0x10F8
drivers/net/wireless/p54/p54pci.c +9 -5
@@ -198,6 +198,7 @@ static void p54p_check_rx_ring(struct ieee80211_hw *dev, u32 *index,while (i != idx) {u16 len;struct sk_buff *skb; +dma_addr_t dma_addr; desc = &ring[i]; len =le16_to_cpu (desc->len); skb = rx_buf[i];
@@ -215,17 +216,20 @@ static void p54p_check_rx_ring(struct ieee80211_hw *dev, u32 *index, len = priv->common.rx_mtu; } + dma_addr =le32_to_cpu (desc->host_addr); +pci_dma_sync_single_for_cpu (priv->pdev, dma_addr, + priv->common.rx_mtu +32 ,PCI_DMA_FROMDEVICE );skb_put (skb, len);if (p54_rx (dev, skb)) { -pci_unmap_single (priv->pdev, -le32_to_cpu (desc->host_addr), - priv->common.rx_mtu +32 , -PCI_DMA_FROMDEVICE ); +pci_unmap_single (priv->pdev, dma_addr, + priv->common.rx_mtu +32 ,PCI_DMA_FROMDEVICE ); rx_buf[i] =NULL ; - desc->host_addr =0 ; + desc->host_addr =cpu_to_le32 (0 ); }else {skb_trim (skb,0 ); +pci_dma_sync_single_for_device (priv->pdev, dma_addr, + priv->common.rx_mtu +32 ,PCI_DMA_FROMDEVICE ); desc->len =cpu_to_le16 (priv->common.rx_mtu +32 ); }
drivers/platform/x86/acer-wmi.c +2 -2
@@ -90,7 +90,7 @@ struct acer_quirks {*/ #define AMW0_GUID1 "67C3371D-95A3-4C37-BB61-DD47B491DAAB"#define AMW0_GUID2 "431F16ED-0C2B-444C-B267-27DEB140CF9C" -#define WMID_GUID1 "6AF4F258-B401-42fd-BE91-3D4AC2D7C0D3" +#define WMID_GUID1 "6AF4F258-B401-42FD-BE91-3D4AC2D7C0D3"#define WMID_GUID2 "95764E09-FB56-4e83-B31A-37761F60994A"MODULE_ALIAS ("wmi:67C3371D-95A3-4C37-BB61-DD47B491DAAB" );
@@ -1065,7 +1065,7 @@ static ssize_t set_bool_threeg(struct device *dev,return -EINVAL ;return count; } -static DEVICE_ATTR(threeg, S_IWUGO | S_IRUGO | S_IWUSR, show_bool_threeg, +static DEVICE_ATTR(threeg, S_IRUGO | S_IWUSR, show_bool_threeg, set_bool_threeg); static ssize_t show_interface(struct device *dev, struct device_attribute *attr,
drivers/platform/x86/asus_acpi.c +1 -7
@@ -1001,14 +1001,8 @@ static int asus_hotk_add_fs(struct acpi_device *device)struct proc_dir_entry *proc;mode_t mode; -/* -* If parameter uid or gid is not changed, keep the default setting for -* our proc entries (-rw-rw-rw-) else, it means we care about security, -* and then set to -rw-rw---- -*/ -if ((asus_uid ==0 ) && (asus_gid ==0 )) { - mode =S_IFREG |S_IRUGO |S_IWUGO ; + mode =S_IFREG |S_IRUGO |S_IWUSR |S_IWGRP ; }else { mode =S_IFREG |S_IRUSR |S_IRGRP |S_IWUSR |S_IWGRP ; printk(KERN_WARNING " asus_uid and asus_gid parameters are "
drivers/platform/x86/tc1100-wmi.c +1 -1
@@ -177,7 +177,7 @@ set_bool_##value(struct device *dev, struct device_attribute *attr, \return -EINVAL ; \return count; \ } \ -static DEVICE_ATTR(value, S_IWUGO | S_IRUGO | S_IWUSR, \ +static DEVICE_ATTR(value, S_IRUGO | S_IWUSR, \ show_bool_##value, set_bool_##value);show_set_bool (wireless,TC1100_INSTANCE_WIRELESS );
drivers/scsi/device_handler/scsi_dh_alua.c +2 -0
@@ -701,6 +701,8 @@ static const struct scsi_dh_devlist alua_dev_list[] = { {"IBM", "2145" }, {"Pillar", "Axiom" }, {"Intel", "Multi-Flex"}, + {"NETAPP", "LUN"}, + {"AIX", "NVDISK"}, {NULL, NULL} };
drivers/staging/usbip/vhci.h +3 -3
@@ -100,9 +100,6 @@ struct vhci_hcd {* But, the index of this array begins from 0. */ struct vhci_device vdev[VHCI_NPORTS ]; - -/* vhci_device which has not been assiged its address yet */ -int pending_port; };
@@ -119,6 +116,9 @@ void rh_port_disconnect(int rhport);void vhci_rx_loop (struct usbip_task *ut);void vhci_tx_loop (struct usbip_task *ut); +struct urb *pickup_urb_and_free_priv (struct vhci_device *vdev, +__u32 seqnum); +#define hardware (&the_controller->pdev.dev)static inline struct vhci_device *port_to_vdev (__u32 port)
drivers/staging/usbip/vhci_hcd.c +46 -8
113 lines not on this page · raw message
drivers/staging/usbip/vhci_rx.c +9 -6
@@ -21,16 +21,14 @@#include "vhci.h" -/* get URB from transmitted urb queue */ -static struct urb *pickup_urb_and_free_priv (struct vhci_device *vdev, +/* get URB from transmitted urb queue. caller must hold vdev->priv_lock */ +struct urb *pickup_urb_and_free_priv (struct vhci_device *vdev,__u32 seqnum) {struct vhci_priv *priv, *tmp;struct urb *urb =NULL ;int status; -spin_lock (&vdev->priv_lock); -list_for_each_entry_safe (priv, tmp, &vdev->priv_rx, list) {if (priv->seqnum == seqnum) { urb = priv->urb;
@@ -61,8 +59,6 @@ static struct urb *pickup_urb_and_free_priv(struct vhci_device *vdev, } } -spin_unlock (&vdev->priv_lock); -return urb; }
@@ -72,9 +68,11 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev,struct usbip_device *ud = &vdev->ud;struct urb *urb; +spin_lock (&vdev->priv_lock); urb =pickup_urb_and_free_priv (vdev, pdu->base.seqnum); +spin_unlock (&vdev->priv_lock);if (!urb) { usbip_uerr("cannot find a urb of seqnum %u\n",
@@ -159,7 +157,12 @@ static void vhci_recv_ret_unlink(struct vhci_device *vdev,return ; } +spin_lock (&vdev->priv_lock); + urb =pickup_urb_and_free_priv (vdev, unlink->unlink_seqnum); + +spin_unlock (&vdev->priv_lock); +if (!urb) {/* * I get the result of a unlink request. But, it seems that I
drivers/usb/core/hcd-pci.c +3 -1
@@ -197,8 +197,10 @@ void usb_hcd_pci_shutdown(struct pci_dev *dev)if (!hcd)return ; -if (hcd->driver->shutdown) +if (hcd->driver->shutdown) { hcd->driver->shutdown (hcd); +pci_disable_device (dev); + } }EXPORT_SYMBOL_GPL (usb_hcd_pci_shutdown);
drivers/usb/core/quirks.c +8 -0
@@ -48,6 +48,10 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x04b4, 0x0526), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Samsung Android phone modem - ID conflict with SPH-I500 */ + { USB_DEVICE(0x04e8, 0x6601), .driver_info = + USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Roland SC-8820 */ { USB_DEVICE(0x0582, 0x0007), .driver_info = USB_QUIRK_RESET_RESUME },
@@ -68,6 +72,10 @@ static const struct usb_device_id usb_quirk_list[] = {/* M-Systems Flash Disk Pioneers */ { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Keytouch QWERTY Panel keyboard */ + { USB_DEVICE(0x0926, 0x3333), .driver_info = + USB_QUIRK_CONFIG_INTF_STRINGS }, + /* X-Rite/Gretag-Macbeth Eye-One Pro display colorimeter */ { USB_DEVICE(0x0971, 0x2000), .driver_info = USB_QUIRK_NO_SET_INTF },
drivers/usb/host/ohci-hcd.c +8 -1
@@ -398,7 +398,14 @@ ohci_shutdown (struct usb_hcd *hcd) ohci =hcd_to_ohci (hcd);ohci_writel (ohci,OHCI_INTR_MIE , &ohci->regs->intrdisable); -ohci_usb_reset (ohci); + ohci->hc_control =ohci_readl (ohci, &ohci->regs->control); + +/* If the SHUTDOWN quirk is set, don't put the controller in RESET */ + ohci->hc_control &= (ohci->flags &OHCI_QUIRK_SHUTDOWN ? +OHCI_CTRL_RWC |OHCI_CTRL_HCFS : +OHCI_CTRL_RWC ); +ohci_writel (ohci, ohci->hc_control, &ohci->regs->control); +/* flush the writes */ (void )ohci_readl (ohci, &ohci->regs->control); }
drivers/usb/host/ohci-pci.c +18 -0
@@ -201,6 +201,20 @@ static int ohci_quirk_amd700(struct usb_hcd *hcd)return 0 ; } +/* nVidia controllers continue to drive Reset signalling on the bus +* even after system shutdown, wasting power. This flag tells the +* shutdown routine to leave the controller OPERATIONAL instead of RESET. +*/ +static int ohci_quirk_nvidia_shutdown (struct usb_hcd *hcd) +{ +struct ohci_hcd *ohci =hcd_to_ohci (hcd); + + ohci->flags |=OHCI_QUIRK_SHUTDOWN ; +ohci_dbg (ohci,"enabled nVidia shutdown quirk\n" ); + +return 0 ; +} +/* * The hardware normally enables the A-link power management feature, which * lets the system lower the power consumption in idle states.
@@ -332,6 +346,10 @@ static const struct pci_device_id ohci_pci_quirks[] = { PCI_DEVICE(PCI_VENDOR_ID_ATI, 0x4399), .driver_data = (unsigned long )ohci_quirk_amd700, }, + { +PCI_DEVICE (PCI_VENDOR_ID_NVIDIA ,PCI_ANY_ID ), + .driver_data = (unsigned long) ohci_quirk_nvidia_shutdown, + },/* FIXME for some of the early AMD 760 southbridges, OHCI * won't work at all. blacklist them.
drivers/usb/host/ohci.h +1 -0
@@ -403,6 +403,7 @@ struct ohci_hcd {#define OHCI_QUIRK_HUB_POWER 0x100/* distrust firmware power/oc setup */ #define OHCI_QUIRK_AMD_ISO 0x200/* ISO transfers*/ #define OHCI_QUIRK_AMD_PREFETCH 0x400/* pre-fetch for ISO transfer */ +#define OHCI_QUIRK_SHUTDOWN 0x800/* nVidia power bug */ // there are also chip quirks/bugs in init logic struct work_struct nec_work;/* Worker for NEC quirk */
drivers/usb/host/pci-quirks.c +11 -7
@@ -169,6 +169,7 @@ static int __devinit mmio_resource_enabled(struct pci_dev *pdev, int idx)static void __devinit quirk_usb_handoff_ohci (struct pci_dev *pdev) {void __iomem *base; +u32 control;if (!mmio_resource_enabled (pdev,0 ))return ;
@@ -177,10 +178,14 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)if (base ==NULL )return ; + control =readl (base +OHCI_CONTROL ); +/* On PA-RISC, PDC can leave IR set incorrectly; ignore it there. */ -#ifndef __hppa__ -{ -u32 control =readl (base +OHCI_CONTROL ); +#ifdef __hppa__ +#define OHCI_CTRL_MASK (OHCI_CTRL_RWC | OHCI_CTRL_IR) +#else +#define OHCI_CTRL_MASK OHCI_CTRL_RWC +if (control &OHCI_CTRL_IR ) {int wait_time =500 ;/* arbitrary; 5 seconds */ writel (OHCI_INTR_OC , base +OHCI_INTRENABLE );
@@ -194,13 +199,12 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)dev_warn (&pdev->dev,"OHCI: BIOS handoff failed" " (BIOS bug?) %08x\n" , readl(base + OHCI_CONTROL)); - -/* reset controller, preserving RWC */ - writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL); } -}#endif +/* reset controller, preserving RWC (and possibly IR) */ +writel (control &OHCI_CTRL_MASK , base +OHCI_CONTROL ); +/* * disable interrupts */
drivers/usb/host/xhci-ring.c +21 -15
@@ -391,8 +391,11 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, state->new_deq_seg =find_trb_seg (cur_td->start_seg, dev->eps[ep_index].stopped_trb, &state->new_cycle_state); -if (!state->new_deq_seg) -BUG (); +if (!state->new_deq_seg) { +WARN_ON (1 ); +return ; + } +/* Dig out the cycle state saved by the xHC during the stop ep cmd */ xhci_dbg (xhci,"Finding endpoint context\n" ); ep_ctx =xhci_get_ep_ctx (xhci, dev->out_ctx, ep_index);
@@ -403,8 +406,10 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, state->new_deq_seg =find_trb_seg (state->new_deq_seg, state->new_deq_ptr, &state->new_cycle_state); -if (!state->new_deq_seg) -BUG (); +if (!state->new_deq_seg) { +WARN_ON (1 ); +return ; + } trb = &state->new_deq_ptr->generic; if ((trb->field[3] & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK) &&
@@ -1485,12 +1490,13 @@ static unsigned int count_sg_trbs_needed(struct xhci_hcd *xhci, struct urb *urb)/* Scatter gather list entries may cross 64KB boundaries */ running_total =TRB_MAX_BUFF_SIZE - - (sg_dma_address (sg) & ((1 <<TRB_MAX_BUFF_SHIFT ) -1 )); + (sg_dma_address (sg) & (TRB_MAX_BUFF_SIZE -1 )); + running_total &=TRB_MAX_BUFF_SIZE -1 ;if (running_total !=0 ) num_trbs++;/* How many more 64KB chunks to transfer, how many more TRBs? */ -while (running_total <sg_dma_len (sg)) { +while (running_total <sg_dma_len (sg) && running_total < temp) { num_trbs++; running_total +=TRB_MAX_BUFF_SIZE ; }
@@ -1515,11 +1521,11 @@ static unsigned int count_sg_trbs_needed(struct xhci_hcd *xhci, struct urb *urb)static void check_trb_math (struct urb *urb,int num_trbs,int running_total) {if (num_trbs !=0 ) -dev_dbg (&urb->dev->dev,"%s - ep %#x - Miscalculated number of " +dev_err (&urb->dev->dev,"%s - ep %#x - Miscalculated number of " "TRBs, %d left\n" , __func__, urb->ep->desc.bEndpointAddress, num_trbs);if (running_total != urb->transfer_buffer_length) - dev_dbg(&urb->dev->dev, "%s - ep %#x - Miscalculated tx length, " + dev_err(&urb->dev->dev, "%s - ep %#x - Miscalculated tx length, " "queued %#x (%d), asked for %#x (%d)\n", __func__, urb->ep->desc.bEndpointAddress,
@@ -1626,8 +1632,7 @@ static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags, sg = urb->sg->sg; addr = (u64 )sg_dma_address (sg); this_sg_len =sg_dma_len (sg); - trb_buff_len =TRB_MAX_BUFF_SIZE - - (addr & ((1 <<TRB_MAX_BUFF_SHIFT ) -1 )); + trb_buff_len =TRB_MAX_BUFF_SIZE - (addr & (TRB_MAX_BUFF_SIZE -1 )); trb_buff_len =min_t (int, trb_buff_len, this_sg_len);if (trb_buff_len > urb->transfer_buffer_length) trb_buff_len = urb->transfer_buffer_length;
@@ -1662,7 +1667,7 @@ static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags, (unsigned int ) (addr +TRB_MAX_BUFF_SIZE ) & ~(TRB_MAX_BUFF_SIZE -1 ), (unsigned int) addr + trb_buff_len);if (TRB_MAX_BUFF_SIZE - - (addr & ((1 <<TRB_MAX_BUFF_SHIFT ) -1 )) < trb_buff_len) { + (addr & (TRB_MAX_BUFF_SIZE -1 )) < trb_buff_len) {xhci_warn (xhci,"WARN: sg dma xfer crosses 64KB boundaries!\n" ); xhci_dbg(xhci, "Next boundary at %#x, end dma = %#x\n", (unsigned int) (addr + TRB_MAX_BUFF_SIZE) & ~(TRB_MAX_BUFF_SIZE - 1),
@@ -1700,7 +1705,7 @@ static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags, } trb_buff_len =TRB_MAX_BUFF_SIZE - - (addr & ((1 <<TRB_MAX_BUFF_SHIFT ) -1 )); + (addr & (TRB_MAX_BUFF_SIZE -1 )); trb_buff_len =min_t (int, trb_buff_len, this_sg_len);if (running_total + trb_buff_len > urb->transfer_buffer_length) trb_buff_len =
@@ -1735,7 +1740,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, num_trbs =0 ;/* How much data is (potentially) left before the 64KB boundary? */ running_total =TRB_MAX_BUFF_SIZE - - (urb->transfer_dma & ((1 <<TRB_MAX_BUFF_SHIFT ) -1 )); + (urb->transfer_dma & (TRB_MAX_BUFF_SIZE -1 )); + running_total &=TRB_MAX_BUFF_SIZE -1 ;/* If there's some data on this 64KB chunk, or we have to send a * zero-length transfer, we need at least one TRB
@@ -1774,8 +1780,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,/* How much data is in the first TRB? */ addr = (u64 ) urb->transfer_dma; trb_buff_len =TRB_MAX_BUFF_SIZE - - (urb->transfer_dma & ((1 <<TRB_MAX_BUFF_SHIFT ) -1 )); -if (urb->transfer_buffer_length < trb_buff_len) + (urb->transfer_dma & (TRB_MAX_BUFF_SIZE -1 )); +if (trb_buff_len > urb->transfer_buffer_length) trb_buff_len = urb->transfer_buffer_length; first_trb = true;
drivers/usb/musb/omap2430.c +1 -0
@@ -309,6 +309,7 @@ static int musb_platform_resume(struct musb *musb)int musb_platform_exit (struct musb *musb) { +del_timer_sync (&musb_idle_timer);omap_vbus_power (musb,0 /*off*/ ,1 );
drivers/usb/serial/sierra.c +3 -0
@@ -266,6 +266,9 @@ static struct usb_device_id id_table [] = { { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */ .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist }, + { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ + .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist + }, { } };
drivers/usb/serial/visor.c +12 -0
@@ -27,6 +27,7 @@#include <linux/uaccess.h> #include <linux/usb.h> #include <linux/usb/serial.h> +#include <linux/usb/cdc.h> #include "visor.h" /*
@@ -758,6 +759,17 @@ static int visor_probe(struct usb_serial *serial,dbg ("%s" , __func__); +/* +* some Samsung Android phones in modem mode have the same ID +* as SPH-I500, but they are ACM devices, so dont bind to them +*/ +if (id->idVendor ==SAMSUNG_VENDOR_ID && + id->idProduct ==SAMSUNG_SPH_I500_ID && + serial->dev->descriptor.bDeviceClass ==USB_CLASS_COMM && + serial->dev->descriptor.bDeviceSubClass == +USB_CDC_SUBCLASS_ACM ) +return -ENODEV ; +if (serial->dev->actconfig->desc.bConfigurationValue !=1 ) {dev_err (&serial->dev->dev,"active config #%d != 1 ??\n" , serial->dev->actconfig->desc.bConfigurationValue);
fs/ecryptfs/inode.c +2 -0
@@ -988,6 +988,8 @@ int ecryptfs_getattr(struct vfsmount *mnt, struct dentry *dentry, rc =vfs_getattr (ecryptfs_dentry_to_lower_mnt (dentry),ecryptfs_dentry_to_lower (dentry), &lower_stat);if (!rc) { +fsstack_copy_attr_all (dentry->d_inode, +ecryptfs_inode_to_lower (dentry->d_inode),NULL );generic_fillattr (dentry->d_inode, stat); stat->blocks = lower_stat.blocks; }
fs/eventpoll.c +95 -0
137 lines not on this page · raw message
fs/file_table.c +1 -1
@@ -121,13 +121,13 @@ struct file *get_empty_filp(void) goto fail;percpu_counter_inc (&nr_files); + f->f_cred =get_cred (cred);if (security_file_alloc (f)) goto fail_sec;INIT_LIST_HEAD (&f->f_u.fu_list);atomic_long_set (&f->f_count,1 );rwlock_init (&f->f_owner.lock); - f->f_cred =get_cred (cred);spin_lock_init (&f->f_lock);eventpoll_init_file (f);/* f->f_version: 0 */
fs/gfs2/bmap.c +1 -1
@@ -541,7 +541,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, *ptr++ =cpu_to_be64 (bn++);break ; } - }while (state !=ALLOC_DATA ); + }while ((state !=ALLOC_DATA ) || !dblock); ip->i_height = height;gfs2_add_inode_blocks (&ip->i_inode, alloced);
fs/nfs/file.c +1 -1
@@ -220,7 +220,7 @@ static int nfs_do_fsync(struct nfs_open_context *ctx, struct inode *inode) have_error |=test_bit (NFS_CONTEXT_ERROR_WRITE , &ctx->flags);if (have_error) ret =xchg (&ctx->error,0 ); -if (!ret) +if (!ret && status <0 ) ret = status;return ret; }
fs/nfsd/nfs4xdr.c +4 -4
@@ -323,8 +323,8 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,READ_BUF (dummy32); len += (XDR_QUADLEN (dummy32) <<2 );READMEM (buf, dummy32); -if ((host_err =nfsd_map_name_to_uid (argp->rqstp, buf, dummy32, &iattr->ia_uid))) - goto out_nfserr; +if ((status =nfsd_map_name_to_uid (argp->rqstp, buf, dummy32, &iattr->ia_uid))) +return status; iattr->ia_valid |=ATTR_UID ; }if (bmval[1 ] &FATTR4_WORD1_OWNER_GROUP ) {
@@ -334,8 +334,8 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,READ_BUF (dummy32); len += (XDR_QUADLEN (dummy32) <<2 );READMEM (buf, dummy32); -if ((host_err =nfsd_map_name_to_gid (argp->rqstp, buf, dummy32, &iattr->ia_gid))) - goto out_nfserr; +if ((status =nfsd_map_name_to_gid (argp->rqstp, buf, dummy32, &iattr->ia_gid))) +return status; iattr->ia_valid |=ATTR_GID ; }if (bmval[1 ] &FATTR4_WORD1_TIME_ACCESS_SET ) {
fs/nfsd/vfs.c +1 -1
@@ -823,7 +823,7 @@ nfsd_get_raparms(dev_t dev, ino_t ino)if (ra->p_count ==0 ) frap = rap; } - depth = nfsdstats.ra_size*11 /10 ; + depth = nfsdstats.ra_size;if (!frap) {spin_unlock (&rab->pb_lock);return NULL ;
fs/ocfs2/stack_user.c +1 -1
@@ -191,7 +191,7 @@ static struct ocfs2_live_connection *ocfs2_connection_find(const char *name)return c; } -return c; +return NULL ; }/*
fs/partitions/ldm.c +5 -0
@@ -251,6 +251,11 @@ static bool ldm_parse_vmdb (const u8 *data, struct vmdb *vm) } vm->vblk_size =get_unaligned_be32 (data +0x08 ); +if (vm->vblk_size ==0 ) { +ldm_error ("Illegal VBLK size" ); +return false; + } + vm->vblk_offset =get_unaligned_be32 (data +0x0C ); vm->last_vblk_seq =get_unaligned_be32 (data +0x04 );
fs/partitions/mac.c +9 -8
@@ -29,10 +29,9 @@ static inline void mac_fix_string(char *stg, int len)int mac_partition (struct parsed_partitions *state,struct block_device *bdev) { -int slot =1 ;Sector sect;unsigned char *data; -int blk, blocks_in_map; +int slot, blocks_in_map;unsigned secsize;#ifdef CONFIG_PPC_PMAC int found_root =0 ;
@@ -59,10 +58,14 @@ int mac_partition(struct parsed_partitions *state, struct block_device *bdev)put_dev_sector (sect);return 0 ;/* not a MacOS disk */ } -printk (" [mac]" ); blocks_in_map =be32_to_cpu (part->map_count); -for (blk =1 ; blk <= blocks_in_map; ++blk) { -int pos = blk * secsize; +if (blocks_in_map <0 || blocks_in_map >=DISK_MAX_PARTS ) { +put_dev_sector (sect); +return 0 ; + } +printk (" [mac]" ); +for (slot =1 ; slot <= blocks_in_map; ++slot) { +int pos = slot * secsize;put_dev_sector (sect); data =read_dev_sector (bdev, pos/512 , §);if (!data)
@@ -113,13 +116,11 @@ int mac_partition(struct parsed_partitions *state, struct block_device *bdev) }if (goodness > found_root_goodness) { - found_root = blk; + found_root = slot; found_root_goodness = goodness; } }#endif /* CONFIG_PPC_PMAC */ - - ++slot; }#ifdef CONFIG_PPC_PMAC if (found_root_goodness)
fs/proc/array.c +1 -4
@@ -172,7 +172,7 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,if (tracer) tpid =task_pid_nr_ns (tracer, ns); } - cred =get_cred ((struct cred *)__task_cred (p)); + cred =get_task_cred (p);seq_printf (m,"State:\t%s\n" "Tgid:\t%d\n"
@@ -336,9 +336,6 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,task_sig (m, task);task_cap (m, task);cpuset_task_status_allowed (m, task); -#if defined(CONFIG_S390 ) -task_show_regs (m, task); -#endif task_context_switch_counts (m, task);return 0 ; }
fs/read_write.c +0 -2
@@ -826,8 +826,6 @@ static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos,if (!(out_file->f_mode &FMODE_WRITE )) goto fput_out; retval = -EINVAL ; -if (!out_file->f_op || !out_file->f_op->sendpage) - goto fput_out; in_inode = in_file->f_path.dentry->d_inode; out_inode = out_file->f_path.dentry->d_inode; retval =rw_verify_area (WRITE , out_file, &out_file->f_pos, count);
fs/splice.c +15 -9
@@ -638,9 +638,11 @@ static int pipe_to_sendpage(struct pipe_inode_info *pipe, ret = buf->ops->confirm (pipe, buf);if (!ret) { more = (sd->flags &SPLICE_F_MORE ) || sd->len < sd->total_len; - - ret = file->f_op->sendpage (file, buf->page, buf->offset, - sd->len, &pos, more); +if (file->f_op && file->f_op->sendpage) + ret = file->f_op->sendpage (file, buf->page, buf->offset, + sd->len, &pos, more); +else + ret = -EINVAL ; }return ret;
@@ -1058,8 +1060,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,if (unlikely (ret <0 ))return ret; - splice_write = out->f_op->splice_write; -if (!splice_write) +if (out->f_op && out->f_op->splice_write) + splice_write = out->f_op->splice_write; +else splice_write = default_file_splice_write;return splice_write (pipe, out, ppos, len, flags);
@@ -1083,8 +1086,9 @@ static long do_splice_to(struct file *in, loff_t *ppos,if (unlikely (ret <0 ))return ret; - splice_read = in->f_op->splice_read; -if (!splice_read) +if (in->f_op && in->f_op->splice_read) + splice_read = in->f_op->splice_read; +else splice_read = default_file_splice_read;return splice_read (in, ppos, pipe, len, flags);
@@ -1306,7 +1310,8 @@ static long do_splice(struct file *in, loff_t __user *off_in,if (off_in)return -ESPIPE ;if (off_out) { -if (out->f_op->llseek == no_llseek) +if (!out->f_op || !out->f_op->llseek || + out->f_op->llseek == no_llseek)return -EINVAL ;if (copy_from_user (&offset, off_out,sizeof (loff_t)))return -EFAULT ;
@@ -1326,7 +1331,8 @@ static long do_splice(struct file *in, loff_t __user *off_in,if (off_out)return -ESPIPE ;if (off_in) { -if (in->f_op->llseek == no_llseek) +if (!in->f_op || !in->f_op->llseek || + in->f_op->llseek == no_llseek)return -EINVAL ;if (copy_from_user (&offset, off_in,sizeof (loff_t)))return -EFAULT ;
fs/xfs/linux-2.6/xfs_export.c +5 -6
@@ -127,13 +127,12 @@ xfs_nfs_get_inode(return ERR_PTR (-ESTALE );/* -* The XFS_IGET_BULKSTAT means that an invalid inode number is just -* fine and not an indication of a corrupted filesystem. Because -* clients can send any kind of invalid file handle, e.g. after -* a restore on the server we have to deal with this case gracefully. +* The XFS_IGET_UNTRUSTED means that an invalid inode number is just +* fine and not an indication of a corrupted filesystem as clients can +* send invalid file handles and we have to handle it gracefully.. */ - error =xfs_iget (mp,NULL , ino,XFS_IGET_BULKSTAT , -XFS_ILOCK_SHARED , &ip,0 ); + error =xfs_iget (mp,NULL , ino,XFS_IGET_UNTRUSTED , +XFS_ILOCK_SHARED , &ip);if (error) {/* * EINVAL means the inode cluster doesn't exist anymore.
fs/xfs/linux-2.6/xfs_ioctl.c +3 -4
@@ -673,10 +673,9 @@ xfs_ioc_bulkstat( error =xfs_bulkstat_single (mp, &inlast, bulkreq.ubuffer, &done); else /* XFS_IOC_FSBULKSTAT */ - error =xfs_bulkstat (mp, &inlast, &count, - (bulkstat_one_pf )xfs_bulkstat_one,NULL , -sizeof (xfs_bstat_t), bulkreq.ubuffer, -BULKSTAT_FG_QUICK , &done); + error =xfs_bulkstat (mp, &inlast, &count, xfs_bulkstat_one, +sizeof (xfs_bstat_t), bulkreq.ubuffer, + &done);if (error)return -error;
fs/xfs/linux-2.6/xfs_ioctl32.c +5 -10
@@ -235,15 +235,12 @@ xfs_bulkstat_one_compat(xfs_ino_t ino,/* inode number to get data for */ void __user *buffer, /* buffer to place output in */ int ubsize, /* size of buffer */ - void *private_data, /* my private data */ - xfs_daddr_t bno, /* starting bno of inode cluster */ int *ubused, /* bytes used by me */ - void *dibuff, /* on-disk inode buffer */ int *stat) /* BULKSTAT_RV_... */ { return xfs_bulkstat_one_int(mp, ino, buffer, ubsize, -xfs_bulkstat_one_fmt_compat ,bno , -ubused ,dibuff ,stat ); +xfs_bulkstat_one_fmt_compat , +ubused ,stat ); }/* copied from xfs_ioctl.c */
@@ -296,13 +293,11 @@ xfs_compat_ioc_bulkstat(int res; error =xfs_bulkstat_one_compat (mp, inlast, bulkreq.ubuffer, -sizeof (compat_xfs_bstat_t), -NULL ,0 ,NULL ,NULL , &res); +sizeof (compat_xfs_bstat_t),0 , &res); }else if (cmd ==XFS_IOC_FSBULKSTAT_32 ) { error =xfs_bulkstat (mp, &inlast, &count, - xfs_bulkstat_one_compat,NULL , -sizeof (compat_xfs_bstat_t), bulkreq.ubuffer, -BULKSTAT_FG_QUICK , &done); + xfs_bulkstat_one_compat,sizeof (compat_xfs_bstat_t), + bulkreq.ubuffer, &done); }else error =XFS_ERROR (EINVAL );if (error)
fs/xfs/quota/xfs_qm.c +8 -10
@@ -1606,10 +1606,7 @@ xfs_qm_dqusage_adjust(xfs_ino_t ino,/* inode number to get data for */ void __user *buffer, /* not used */ int ubsize, /* not used */ - void *private_data, /* not used */ - xfs_daddr_t bno, /* starting block of inode cluster */ int *ubused, /* not used */ - void *dip, /* on-disk inode pointer (not used) */ int *res) /* result code value */ { xfs_inode_t *ip;
@@ -1634,7 +1631,7 @@ xfs_qm_dqusage_adjust(* the case in all other instances. It's OK that we do this because * quotacheck is done only at mount time. */ -if ((error =xfs_iget (mp,NULL , ino,0 ,XFS_ILOCK_EXCL , &ip, bno))) { +if ((error =xfs_iget (mp,NULL , ino,0 ,XFS_ILOCK_EXCL , &ip))) { *res =BULKSTAT_RV_NOTHING ;return error; }
@@ -1766,12 +1763,13 @@ xfs_qm_quotacheck(* Iterate thru all the inodes in the file system, * adjusting the corresponding dquot counters in core. */ -if ((error =xfs_bulkstat (mp, &lastino, &count, - xfs_qm_dqusage_adjust,NULL , - structsz,NULL ,BULKSTAT_FG_IGET , &done))) + error =xfs_bulkstat (mp, &lastino, &count, + xfs_qm_dqusage_adjust, + structsz,NULL , &done); +if (error)break ; - }while (! done); + }while (!done);/* * We've made all the changes that we need to make incore.
@@ -1859,14 +1857,14 @@ xfs_qm_init_quotainos( mp->m_sb.sb_uquotino != NULLFSINO) {ASSERT (mp->m_sb.sb_uquotino >0 );if ((error =xfs_iget (mp,NULL , mp->m_sb.sb_uquotino, -0 ,0 , &uip,0 ))) +0 ,0 , &uip)))return XFS_ERROR (error); }if (XFS_IS_OQUOTA_ON (mp) && mp->m_sb.sb_gquotino !=NULLFSINO ) {ASSERT (mp->m_sb.sb_gquotino >0 );if ((error =xfs_iget (mp,NULL , mp->m_sb.sb_gquotino, -0 ,0 , &gip,0 ))) { +0 ,0 , &gip))) {if (uip)IRELE (uip);return XFS_ERROR (error);
fs/xfs/quota/xfs_qm_syscalls.c +12 -15
@@ -266,7 +266,7 @@ xfs_qm_scall_trunc_qfiles( }if ((flags &XFS_DQ_USER ) && mp->m_sb.sb_uquotino !=NULLFSINO ) { - error =xfs_iget (mp,NULL , mp->m_sb.sb_uquotino,0 ,0 , &qip,0 ); + error =xfs_iget (mp,NULL , mp->m_sb.sb_uquotino,0 ,0 , &qip);if (!error) { error =xfs_truncate_file (mp, qip);IRELE (qip);
@@ -275,7 +275,7 @@ xfs_qm_scall_trunc_qfiles(if ((flags & (XFS_DQ_GROUP |XFS_DQ_PROJ )) && mp->m_sb.sb_gquotino !=NULLFSINO ) { - error2 =xfs_iget (mp,NULL , mp->m_sb.sb_gquotino,0 ,0 , &qip,0 ); + error2 =xfs_iget (mp,NULL , mp->m_sb.sb_gquotino,0 ,0 , &qip);if (!error2) { error2 =xfs_truncate_file (mp, qip);IRELE (qip);
@@ -420,12 +420,12 @@ xfs_qm_scall_getqstat( }if (!uip && mp->m_sb.sb_uquotino !=NULLFSINO ) {if (xfs_iget (mp,NULL , mp->m_sb.sb_uquotino, -0 ,0 , &uip,0 ) ==0 ) +0 ,0 , &uip) ==0 ) tempuqip =B_TRUE ; }if (!gip && mp->m_sb.sb_gquotino !=NULLFSINO ) {if (xfs_iget (mp,NULL , mp->m_sb.sb_gquotino, -0 ,0 , &gip,0 ) ==0 ) +0 ,0 , &gip) ==0 ) tempgqip =B_TRUE ; }if (uip) {
@@ -1114,10 +1114,7 @@ xfs_qm_internalqcheck_adjust(xfs_ino_t ino,/* inode number to get data for */ void __user *buffer, /* not used */ int ubsize, /* not used */ - void *private_data, /* not used */ - xfs_daddr_t bno, /* starting block of inode cluster */ int *ubused, /* not used */ - void *dip, /* not used */ int *res) /* bulkstat result code */ { xfs_inode_t *ip;
@@ -1139,7 +1136,7 @@ xfs_qm_internalqcheck_adjust( ipreleased =B_FALSE ; again: lock_flags =XFS_ILOCK_SHARED ; -if ((error =xfs_iget (mp,NULL , ino,0 , lock_flags, &ip, bno))) { +if ((error =xfs_iget (mp,NULL , ino,0 , lock_flags, &ip))) { *res =BULKSTAT_RV_NOTHING ;return (error); }
@@ -1212,15 +1209,15 @@ xfs_qm_internalqcheck(* Iterate thru all the inodes in the file system, * adjusting the corresponding dquot counters */ -if ((error =xfs_bulkstat (mp, &lastino, &count, - xfs_qm_internalqcheck_adjust,NULL , -0 ,NULL ,BULKSTAT_FG_IGET , &done))) { + error =xfs_bulkstat (mp, &lastino, &count, + xfs_qm_internalqcheck_adjust, +0 ,NULL , &done); +if (error) { +cmn_err (CE_DEBUG ,"Bulkstat returned error 0x%x" , error);break ; } - }while (! done); -if (error) { -cmn_err (CE_DEBUG ,"Bulkstat returned error 0x%x" , error); - } + }while (!done); +cmn_err (CE_DEBUG ,"Checking results against system dquots" );for (i =0 ; i < qmtest_hashmask; i++) { h1 = &qmtest_udqtab[i];
fs/xfs/xfs_ialloc.c +88 -62
184 lines not on this page · raw message
fs/xfs/xfs_iget.c +3 -7
@@ -295,7 +295,6 @@ xfs_iget_cache_miss( xfs_trans_t *tp, xfs_ino_t ino, struct xfs_inode **ipp, - xfs_daddr_t bno, int flags, int lock_flags) __releases(pag->pag_ici_lock) {
@@ -308,7 +307,7 @@ xfs_iget_cache_miss(if (!ip)return ENOMEM ; - error =xfs_iread (mp, tp, ip, bno, flags); + error =xfs_iread (mp, tp, ip, flags);if (error) goto out_destroy;
@@ -392,8 +391,6 @@ out_destroy:* within the file system for the inode being requested. * lock_flags -- flags indicating how to lock the inode. See the comment * for xfs_ilock() for a list of valid values. -* bno -- the block number starting the buffer containing the inode, -* if known (as by bulkstat), else 0. */ int xfs_iget(
@@ -402,8 +399,7 @@ xfs_iget(xfs_ino_t ino, uint flags, uint lock_flags, - xfs_inode_t **ipp, - xfs_daddr_t bno) + xfs_inode_t **ipp) { xfs_inode_t *ip;int error;
@@ -434,7 +430,7 @@ again:read_unlock (&pag->pag_ici_lock);XFS_STATS_INC (xs_ig_missed); - error =xfs_iget_cache_miss (mp, pag, tp, ino, &ip, bno, + error =xfs_iget_cache_miss (mp, pag, tp, ino, &ip, flags, lock_flags);if (error) goto out_error_or_again;
fs/xfs/xfs_inode.c +1 -4
@@ -177,7 +177,7 @@ xfs_imap_to_bp(if (unlikely (XFS_TEST_ERROR (!di_ok, mp,XFS_ERRTAG_ITOBP_INOTOBP ,XFS_RANDOM_ITOBP_INOTOBP ))) { -if (iget_flags &XFS_IGET_BULKSTAT ) { +if (iget_flags &XFS_IGET_UNTRUSTED ) {xfs_trans_brelse (tp, bp);return XFS_ERROR (EINVAL ); }
@@ -787,7 +787,6 @@ xfs_iread( xfs_mount_t *mp, xfs_trans_t *tp, xfs_inode_t *ip, - xfs_daddr_t bno, uint iget_flags) {xfs_buf_t *bp;
@@ -797,11 +796,9 @@ xfs_iread(/* * Fill in the location information in the in-core inode. */ - ip->i_imap.im_blkno = bno; error =xfs_imap (mp, tp, ip->i_ino, &ip->i_imap, iget_flags);if (error)return error; -ASSERT (bno ==0 || bno == ip->i_imap.im_blkno);/* * Get pointers to the on-disk inode and the buffer containing it.
fs/xfs/xfs_inode.h +3 -3
@@ -468,7 +468,7 @@ static inline void xfs_ifunlock(xfs_inode_t *ip)* xfs_iget.c prototypes. */ int xfs_iget (struct xfs_mount *,struct xfs_trans *,xfs_ino_t , -uint ,uint ,xfs_inode_t **,xfs_daddr_t ); +uint ,uint ,xfs_inode_t **);void xfs_iput (xfs_inode_t *,uint );void xfs_iput_new (xfs_inode_t *,uint );void xfs_ilock (xfs_inode_t *,uint );
@@ -558,7 +558,7 @@ do { \* Flags for xfs_iget() */ #define XFS_IGET_CREATE 0x1 -#define XFS_IGET_BULKSTAT 0x2 +#define XFS_IGET_UNTRUSTED 0x2 int xfs_inotobp(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, struct xfs_dinode **,
@@ -567,7 +567,7 @@ int xfs_itobp(struct xfs_mount *, struct xfs_trans *, struct xfs_inode *, struct xfs_dinode **, struct xfs_buf **, uint);int xfs_iread (struct xfs_mount *,struct xfs_trans *, -struct xfs_inode *,xfs_daddr_t ,uint ); +struct xfs_inode *,uint );void xfs_dinode_to_disk (struct xfs_dinode *,struct xfs_icdinode *);void xfs_idestroy_fork (struct xfs_inode *,int );
fs/xfs/xfs_itable.c +40 -244
370 lines not on this page · raw message
fs/xfs/xfs_itable.h +0 -17
@@ -27,10 +27,7 @@ typedef int (*bulkstat_one_pf)(struct xfs_mount *mp,xfs_ino_t ino, void __user *buffer, int ubsize, - void *private_data, - xfs_daddr_t bno, int *ubused, - void *dip, int *stat);/*
@@ -41,13 +38,6 @@ typedef int (*bulkstat_one_pf)(struct xfs_mount *mp,#define BULKSTAT_RV_GIVEUP 2/* -* Values for bulkstat flag argument. -*/ -#define BULKSTAT_FG_IGET 0x1/* Go through the buffer cache */ -#define BULKSTAT_FG_QUICK 0x2/* No iget, walk the dinode cluster */ -#define BULKSTAT_FG_INLINE 0x4/* No iget if inline attrs */ - -/* * Return stat information in bulk (by-inode) for the filesystem. */ int /* error status */
@@ -56,10 +46,8 @@ xfs_bulkstat( xfs_ino_t *lastino,/* last inode returned */ int *count,/* size of buffer/count returned */ bulkstat_one_pf formatter, /* func that'd fill a single buf */ - void *private_data,/* private data for formatter */ size_t statstruct_size,/* sizeof struct that we're filling */ char__user *ubuffer,/* buffer with inode stats */ - int flags, /* flag to control access method */ int *done); /* 1 if there are more stats to get */int
@@ -82,9 +70,7 @@ xfs_bulkstat_one_int(void __user *buffer, int ubsize, bulkstat_one_fmt_pf formatter, - xfs_daddr_t bno, int *ubused, - void *dibuff, int *stat);int
@@ -93,10 +79,7 @@ xfs_bulkstat_one(xfs_ino_t ino, void __user *buffer, int ubsize, - void *private_data, - xfs_daddr_t bno, int *ubused, - void *dibuff, int *stat); typedef int (*inumbers_fmt_pf)(
fs/xfs/xfs_log_recover.c +1 -1
@@ -3209,7 +3209,7 @@ xlog_recover_process_one_iunlink(int error; ino =XFS_AGINO_TO_INO (mp, agno, agino); - error =xfs_iget (mp,NULL , ino,0 ,0 , &ip,0 ); + error =xfs_iget (mp,NULL , ino,0 ,0 , &ip);if (error) goto fail;
fs/xfs/xfs_mount.c +1 -1
@@ -1207,7 +1207,7 @@ xfs_mountfs(* Get and sanity-check the root inode. * Save the pointer to it in the mount structure. */ - error =xfs_iget (mp,NULL , sbp->sb_rootino,0 ,XFS_ILOCK_EXCL , &rip,0 ); + error =xfs_iget (mp,NULL , sbp->sb_rootino,0 ,XFS_ILOCK_EXCL , &rip);if (error) {cmn_err (CE_WARN ,"XFS: failed to read root inode" ); goto out_log_dealloc;
fs/xfs/xfs_rtalloc.c +2 -2
@@ -2274,12 +2274,12 @@ xfs_rtmount_inodes( sbp = &mp->m_sb;if (sbp->sb_rbmino ==NULLFSINO )return 0 ; - error =xfs_iget (mp,NULL , sbp->sb_rbmino,0 ,0 , &mp->m_rbmip,0 ); + error =xfs_iget (mp,NULL , sbp->sb_rbmino,0 ,0 , &mp->m_rbmip);if (error)return error;ASSERT (mp->m_rbmip !=NULL );ASSERT (sbp->sb_rsumino !=NULLFSINO ); - error =xfs_iget (mp,NULL , sbp->sb_rsumino,0 ,0 , &mp->m_rsumip,0 ); + error =xfs_iget (mp,NULL , sbp->sb_rsumino,0 ,0 , &mp->m_rsumip);if (error) {IRELE (mp->m_rbmip);return error;
fs/xfs/xfs_trans_inode.c +1 -1
@@ -62,7 +62,7 @@ xfs_trans_iget( {int error; - error =xfs_iget (mp, tp, ino, flags, lock_flags, ipp,0 ); + error =xfs_iget (mp, tp, ino, flags, lock_flags, ipp);if (!error && tp)xfs_trans_ijoin (tp, *ipp, lock_flags);return error;
fs/xfs/xfs_vnodeops.c +1 -1
@@ -1371,7 +1371,7 @@ xfs_lookup(if (error) goto out; - error =xfs_iget (dp->i_mount,NULL , inum,0 ,0 , ipp,0 ); + error =xfs_iget (dp->i_mount,NULL , inum,0 ,0 , ipp);if (error) goto out_free_name;
include/linux/cred.h +1 -20
@@ -153,6 +153,7 @@ struct cred {extern void __put_cred (struct cred *);extern void exit_creds (struct task_struct *);extern int copy_creds (struct task_struct *,unsigned long ); +extern const struct cred *get_task_cred (struct task_struct *);extern struct cred *cred_alloc_blank (void );extern struct cred *prepare_creds (void );extern struct cred *prepare_exec_creds (void );
@@ -283,26 +284,6 @@ static inline void put_cred(const struct cred *_cred) ((const struct cred *)(rcu_dereference ((task)->real_cred)))/** -* get_task_cred - Get another task's objective credentials -* @task: The task to query -* -* Get the objective credentials of a task, pinning them so that they can't go -* away. Accessing a task's credentials directly is not permitted. -* -* The caller must make sure task doesn't go away, either by holding a ref on -* task or by holding tasklist_lock to prevent it from being unlinked. - */ -#define get_task_cred (task) \ -({ \ - struct cred *__cred; \ - rcu_read_lock(); \ - __cred = (struct cred *) __task_cred((task)); \ - get_cred(__cred); \ - rcu_read_unlock(); \ - __cred; \ -}) - -/** * get_current_cred - Get the current task's subjective credentials * * Get the subjective credentials of the current task, pinning them so that
kernel/cred.c +35 -6
75 lines not on this page · raw message
kernel/irq/manage.c +1 -1
@@ -1079,7 +1079,7 @@ int request_threaded_irq(unsigned int irq, irq_handler_t handler,if (retval)kfree (action); -#ifdef CONFIG_DEBUG_SHIRQ +#ifdef CONFIG_DEBUG_SHIRQ_FIXME if (irqflags &IRQF_SHARED ) {/* * It's a shared IRQ -- the driver ought to be prepared for it
kernel/power/snapshot.c +2 -5
@@ -1466,11 +1466,8 @@ static int swsusp_alloc(struct memory_bitmap *orig_bm, struct memory_bitmap *copy_bm, unsigned int nr_pages, unsigned int nr_highmem) { - int error = 0; - if (nr_highmem > 0) { - error =get_highmem_buffer (PG_ANY ); -if (error) + if (get_highmem_buffer(PG_ANY)) goto err_out;if (nr_highmem > alloc_highmem) { nr_highmem -= alloc_highmem;
@@ -1493,7 +1490,7 @@ swsusp_alloc(struct memory_bitmap *orig_bm, struct memory_bitmap *copy_bm, err_out:swsusp_free (); -return error; +return -ENOMEM ; } asmlinkage int swsusp_save(void)
lib/swiotlb.c +4 -2
@@ -631,8 +631,10 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,/* * Ensure that the address returned is DMA'ble */ -if (!dma_capable (dev, dev_addr, size)) -panic ("map_single: bounce buffer is not DMA'ble" ); +if (!dma_capable (dev, dev_addr, size)) { +swiotlb_tbl_unmap_single (dev, map, size, dir); + dev_addr =swiotlb_virt_to_bus (dev, io_tlb_overflow_buffer); + }return dev_addr; }
net/core/filter.c +35 -29
190 lines not on this page · raw message
net/ipv4/tcp.c +1 -1
@@ -2117,7 +2117,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,/* Values greater than interface MTU won't take effect. However * at the point when this call is done we typically don't yet * know which interface is going to be used */ -if (val <8 || val >MAX_TCP_WINDOW ) { +if (val <TCP_MIN_MSS || val >MAX_TCP_WINDOW ) { err = -EINVAL ;break ; }
net/sctp/auth.c +6 -2
@@ -542,16 +542,20 @@ struct sctp_hmac *sctp_auth_asoc_get_hmac(const struct sctp_association *asoc) id =ntohs (hmacs->hmac_ids[i]);/* Check the id is in the supported range */ -if (id >SCTP_AUTH_HMAC_ID_MAX ) +if (id >SCTP_AUTH_HMAC_ID_MAX ) { + id =0 ;continue ; + }/* See is we support the id. Supported IDs have name and * length fields set, so that we can allocated and use * them. We can safely just check for name, for without the * name, we can't allocate the TFM. */ -if (!sctp_hmac_list[id].hmac_name) +if (!sctp_hmac_list[id].hmac_name) { + id =0 ;continue ; + }break ; }
net/sunrpc/cache.c +3 -1
@@ -1234,8 +1234,10 @@ static int content_open(struct inode *inode, struct file *file,if (!cd || !try_module_get (cd->owner))return -EACCES ; han =__seq_open_private (file, &cache_content_op,sizeof (*han)); -if (han ==NULL ) +if (han ==NULL ) { +module_put (cd->owner);return -ENOMEM ; + } han->cd = cd;return 0 ;
net/x25/x25_link.c +4 -0
@@ -391,8 +391,12 @@ void __exit x25_link_free(void)write_lock_bh (&x25_neigh_list_lock);list_for_each_safe (entry, tmp, &x25_neigh_list) { +struct net_device *dev; + nb = list_entry(entry, struct x25_neigh, node); + dev = nb->dev;__x25_remove_neigh (nb); +dev_put (dev); }write_unlock_bh (&x25_neigh_list_lock); }
security/selinux/hooks.c +5 -1
@@ -3262,7 +3262,11 @@ static void selinux_cred_free(struct cred *cred) {struct task_security_struct *tsec = cred->security; -BUG_ON ((unsigned long ) cred->security <PAGE_SIZE ); +/* +* cred->security == NULL if security_cred_alloc_blank() or +* security_prepare_creds() returned an error. +*/ +BUG_ON (cred->security && (unsigned long ) cred->security <PAGE_SIZE ); cred->security = (void *)0x7UL ;kfree (tsec); }
sound/pci/hda/hda_intel.c +1 -0
@@ -2236,6 +2236,7 @@ static struct snd_pci_quirk position_fix_list[] __devinitdata = {SND_PCI_QUIRK (0x1043 ,0x813d ,"ASUS P5AD2" ,POS_FIX_LPIB ),SND_PCI_QUIRK (0x1043 ,0x81b3 ,"ASUS" ,POS_FIX_LPIB ),SND_PCI_QUIRK (0x1043 ,0x81e7 ,"ASUS M2V" ,POS_FIX_LPIB ), +SND_PCI_QUIRK (0x1043 ,0x8410 ,"ASUS" ,POS_FIX_LPIB ),SND_PCI_QUIRK (0x104d ,0x9069 ,"Sony VPCS11V9E" ,POS_FIX_LPIB ),SND_PCI_QUIRK (0x1106 ,0x3288 ,"ASUS M2V-MX SE" ,POS_FIX_LPIB ), SND_PCI_QUIRK(0x1179, 0xff10, "Toshiba A100-259", POS_FIX_LPIB),
sound/usb/caiaq/audio.c +1 -1
@@ -639,7 +639,7 @@ int snd_usb_caiaq_audio_init(struct snd_usb_caiaqdev *dev) } dev->pcm->private_data = dev; -strcpy (dev->pcm->name, dev->product_name); +strlcpy (dev->pcm->name, dev->product_name,sizeof (dev->pcm->name));memset (dev->sub_playback,0 ,sizeof (dev->sub_playback));memset (dev->sub_capture,0 ,sizeof (dev->sub_capture));
sound/usb/caiaq/midi.c +1 -1
@@ -135,7 +135,7 @@ int snd_usb_caiaq_midi_init(struct snd_usb_caiaqdev *device)if (ret <0 )return ret; -strcpy (rmidi->name, device->product_name); +strlcpy (rmidi->name, device->product_name,sizeof (rmidi->name)); rmidi->info_flags =SNDRV_RAWMIDI_INFO_DUPLEX ; rmidi->private_data = device;
Quoted 168 lines · Greg KH
I'm announcing the release of the 2.6.32.30 kernel.
All users of the 2.6.32 kernel series must upgrade.
Many thanks again to Maximilian Attems who dug around in a lot of different distro kernels and forwarded to me the original git commit ids that should be applied to this tree. Red Hat didn't make this very easy due to their "one giant patch" format, and his skill is helping everyone out here. It's much appreciated.
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
------------
Makefile | 2 arch/arm/kernel/signal.c | 4 arch/s390/include/asm/processor.h | 5 arch/s390/kernel/traps.c | 37 --- arch/x86/include/asm/acpi.h | 1 arch/x86/include/asm/pvclock.h | 1 arch/x86/kernel/acpi/boot.c | 14 + arch/x86/kernel/early-quirks.c | 16 - arch/x86/kernel/hpet.c | 12 + arch/x86/kernel/pvclock.c | 5 arch/x86/xen/time.c | 2 drivers/block/pktcdvd.c | 2 drivers/isdn/hisax/config.c | 18 + drivers/isdn/hisax/hisax.h | 1 drivers/md/dm-raid1.c | 2 drivers/md/dm-region-hash.c | 5 drivers/md/md.c | 3 drivers/media/dvb/ttpci/av7110_ca.c | 2 drivers/media/radio/radio-aimslab.c | 1 drivers/message/fusion/mptctl.c | 8 drivers/message/fusion/mptscsih.c | 7 drivers/net/benet/be.h | 2 drivers/net/benet/be_main.c | 18 - drivers/net/bonding/bond_ipv6.c | 9 drivers/net/ixgbe/ixgbe_82599.c | 1 drivers/net/ixgbe/ixgbe_main.c | 3 drivers/net/ixgbe/ixgbe_type.h | 1 drivers/net/wireless/p54/p54pci.c | 14 - drivers/platform/x86/acer-wmi.c | 4 drivers/platform/x86/asus_acpi.c | 8 drivers/platform/x86/tc1100-wmi.c | 2 drivers/scsi/device_handler/scsi_dh_alua.c | 2 drivers/staging/usbip/vhci.h | 6 drivers/staging/usbip/vhci_hcd.c | 54 ++++- drivers/staging/usbip/vhci_rx.c | 15 - drivers/usb/core/hcd-pci.c | 4 drivers/usb/core/quirks.c | 8 drivers/usb/host/ohci-hcd.c | 9 drivers/usb/host/ohci-pci.c | 18 + drivers/usb/host/ohci.h | 1 drivers/usb/host/pci-quirks.c | 18 + drivers/usb/host/xhci-ring.c | 36 ++- drivers/usb/musb/omap2430.c | 1 drivers/usb/serial/sierra.c | 3 drivers/usb/serial/visor.c | 12 + fs/ecryptfs/inode.c | 2 fs/eventpoll.c | 95 +++++++++ fs/file_table.c | 2 fs/gfs2/bmap.c | 2 fs/nfs/file.c | 2 fs/nfsd/nfs4xdr.c | 8 fs/nfsd/vfs.c | 2 fs/ocfs2/stack_user.c | 2 fs/partitions/ldm.c | 5 fs/partitions/mac.c | 17 - fs/proc/array.c | 5 fs/read_write.c | 2 fs/splice.c | 24 +- fs/xfs/linux-2.6/xfs_export.c | 11 - fs/xfs/linux-2.6/xfs_ioctl.c | 7 fs/xfs/linux-2.6/xfs_ioctl32.c | 15 - fs/xfs/quota/xfs_qm.c | 18 - fs/xfs/quota/xfs_qm_syscalls.c | 27 +- fs/xfs/xfs_ialloc.c | 150 ++++++++------- fs/xfs/xfs_iget.c | 10 - fs/xfs/xfs_inode.c | 5 fs/xfs/xfs_inode.h | 6 fs/xfs/xfs_itable.c | 284 ++++------------------------- fs/xfs/xfs_itable.h | 17 - fs/xfs/xfs_log_recover.c | 2 fs/xfs/xfs_mount.c | 2 fs/xfs/xfs_rtalloc.c | 4 fs/xfs/xfs_trans_inode.c | 2 fs/xfs/xfs_vnodeops.c | 2 include/linux/cred.h | 21 -- kernel/cred.c | 41 +++- kernel/irq/manage.c | 2 kernel/power/snapshot.c | 7 lib/swiotlb.c | 6 net/core/filter.c | 64 +++--- net/ipv4/tcp.c | 2 net/sctp/auth.c | 8 net/sunrpc/cache.c | 4 net/x25/x25_link.c | 4 security/selinux/hooks.c | 6 sound/pci/hda/hda_intel.c | 1 sound/usb/caiaq/audio.c | 2 sound/usb/caiaq/midi.c | 2 88 files changed, 669 insertions(+), 628 deletions(-)Ajit Khaparde (1):
be2net: Maintain tx and rx counters in driverAlan Stern (2):
OHCI: work around for nVidia shutdown problem
USB: add quirks entry for Keytouch QWERTY PanelAndreas Herrmann (1):
x86 quirk: Fix polarity for IRQ0 pin2 override on SB800 systemsApollon Oikonomopoulos (1):
x25: decrement netdev reference counts on unloadBen Hutchings (1):
bonding/vlan: Avoid mangled NAs on slaves without VLAN tag insertionBrian King (1):
scsi_dh_alua: Add IBM Power Virtual SCSI ALUA device to dev listChangli Gao (1):
sendfile(): checkf_op.splice_write()rather thanf_op.sendpage()Christian Lamparter (1):
p54pci: update receive dma buffers before and after processingChristoph Hellwig (1):
xfs: always use iget in bulkstatDan Carpenter (1):
av7110: check for negative array offsetDan Rosenberg (2):
sctp: Fix out-of-bounds reading insctp_asoc_get_hmac()Fix pktcdvd ioctldev_minorrange checkDave Chinner (4):
xfs: validate untrusted inode numbers during lookup
xfs: renameXFS_IGET_BULKSTATtoXFS_IGET_UNTRUSTED
xfs: remove block number from inode lookup code
xfs: fix untrusted inode number lookupDavid Henningsson (1):
ALSA: HDA: Addposition_fixquirk for an Asus deviceDavid Howells (1):
CRED: Fixget_task_cred()andtask_state()to not resurrect dead credentialsDavid S. Miller (4):
filter: make sure filters dont read uninitialized memory
tcp: IncreaseTCP_MAXSEGsocket option minimum.
tcp: MakeTCP_MAXSEGminimum more correct.
x25: Do not reference freed memory.Davide Libenzi (1):
epoll: prevent creating circular epoll structures
Quoted 7 lines
Don Skidmore (1):
ixgbe: add support for 82599 based Express Module X520-P2FUJITA Tomonori (1):
swiotlb: fix wrong panic
This one breaks compilation of 64bit for me as swiotlb_tbl_unmap_single() does not exist. It does not look like it is a simple single patch that would get it back to 2.6.32.
-Stefan
Quoted 110 lines
Geert Uytterhoeven (1):
radio-aimslab.cneeds #include <linux/delay.h>Greg Kroah-Hartman (1):
Linux 2.6.32.30J. R. Okajima (1):
NFS: fix the return value ofnfs_file_fsync()Jeremy Fitzhardinge (1):
x86/pvclock: Zerolast_valueon resumeJohan Hovold (1):
usb: musb: omap2430: fix kernel panic on rebootJon Thomas (1):
sierra: add new ID for Airprime/Sierra USB IP modemKashyap, Desai (2):
mptfusion:mptctl_releaseis required inmptctl.c
mptfusion: Fix Incorrect return value inmptscsih_dev_resetKonstantin Khorenko (1):
NFSD: memory corruption due to writing beyond the stat arrayLi Zefan (1):
sunrpc/cache: fix module refcnt leak in a failure pathMaciej Szmigiero (2):
USB: Add Samsung SGH-I500/Android modem ID switch to visor driver
USB: Add quirk for Samsung Android phone modemMartin Schwidefsky (1):
s390: removetask_show_regsMatthew Garrett (1):
acer-wmi: Fix capitalisation of GUIDMax Vozeler (4):
staging: usbip: vhci: update reference count forusb_device
staging: usbip: vhci: give back URBs from in-flight unlink requests
staging: usbip: vhci: refuse to enqueue for dead connections
staging: usbip: vhci: useurb->dev->portnumto find portMike Christie (1):
scsi_dh_alua: add netapp to dev listMikulas Patocka (1):
dm raid1: fail writes if errors are not handled and log failsMilton Miller (1):
ixgbe: prevent speculative processing of descriptors before readyNeilBrown (2):
nfsd: correctly handle return value from nfsd_map_name_to_*
md: correctly handle probe of an 'mdp' device.Paul Zimmerman (4):
xhci: AvoidBUG()in interrupt context
xhci: Clarify some expressions in the TRB math
xhci: Fix errors in the running total calculations in the TRB math
xhci: Fix an error incount_sg_trbs_needed()Russell King (1):
ARM: Ensure predictable endian state on signal handler entryShaohua Li (1):
x86, hpet: Disable per-cpu hpet timer if ARAT is supportedStanislaw Gruszka (1):
PM / Hibernate: Return error code whenalloc_image_page()failsSteven Whitehouse (1):
GFS2: Fix bmap allocation corner-case bugTakahiro Yasui (1):
dm raid1: fix null pointer dereference in suspendTakashi Iwai (1):
ALSA: caiaq - Fix possible string-buffer overflowTetsuo Handa (3):
CRED: Fix kernel panic uponsecurity_file_alloc()failure.
CRED: FixBUG()uponsecurity_cred_alloc_blank()failure
CRED: Fix memory and refcount leaks uponsecurity_prepare_creds()failureThomas Gleixner (2):
isdn: hisax: Replace the bogus access to irq stats
genirq: Disable theSHIRQ_DEBUGcall inrequest_threaded_irqfor nowTimo Warns (2):
fs/partitions: Validatemap_countin Mac partition tables
ldm: corrupted partition table can cause kernel oopsTyler Hicks (1):
eCryptfs: Copy up lower inode attrs in getattrVasiliy Kulikov (3):
platform: x86: acer-wmi: world-writable sysfs threeg file
platform: x86:asus_acpi: world-writable procfs files
platform: x86: tc1100-wmi: world-writable sysfs wireless and jogdial filesdann frazier (1):
ocfs2_connection_find()returns pointer to bad structure--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Quoted 7 lines · Stefan Bader
Quoted 3 lines
FUJITA Tomonori (1):
swiotlb: fix wrong panicThis one breaks compilation of 64bit for me as
swiotlb_tbl_unmap_single()does not exist. It does not look like it is a simple single patch that would get it back to 2.6.32.
I don't understand. Is this patch somehow broken? Is there an additional patch I need to apply to fix the build issue? I need more information here.
thanks,
greg k-h
Quoted 5 lines · Greg KH
Quoted 4 lines · Stefan Bader
Quoted 3 lines
FUJITA Tomonori (1):
swiotlb: fix wrong panic
Quoted 8 lines
Quoted 3 lines
This one breaks compilation of 64bit for me as
swiotlb_tbl_unmap_single()does not exist. It does not look like it is a simple single patch that would get it back to 2.6.32.I don't understand. Is this patch somehow broken? Is there an additional patch I need to apply to fix the build issue? I need more information here.
This is a patch included in your 2.6.32.30 release and it is broken because it uses a function that does not exist in 2.6.32. When I looked at the git blame of the function in Linus tree it consists of multiple shas. So it would be more than one single patch needed from there.
-Stefan
Quoted 8 lines
thanks,
greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Quoted 5 lines · Greg KH
Quoted 4 lines · Stefan Bader
Quoted 3 lines
FUJITA Tomonori (1):
swiotlb: fix wrong panic
Quoted 7 lines
Quoted 3 lines
This one breaks compilation of 64bit for me as
swiotlb_tbl_unmap_single()does not exist. It does not look like it is a simple single patch that would get it back to 2.6.32.I don't understand. Is this patch somehow broken? Is there an additional patch I need to apply to fix the build issue? I need more information here.
Same problem here, not sure what the fix is. With this patch applied on 64-bit I get:
$ make lib/swiotlb.o CHK include/linux/version.h CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-x86 HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/basic/hash CC kernel/bounds.s GEN include/linux/bounds.h CC arch/x86/kernel/asm-offsets.s GEN include/asm/asm-offsets.h CALL scripts/checksyscalls.sh HOSTCC scripts/genksyms/genksyms.o HOSTCC scripts/genksyms/lex.o HOSTCC scripts/genksyms/parse.o HOSTLD scripts/genksyms/genksyms CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost HOSTCC scripts/kallsyms HOSTCC scripts/pnmtologo HOSTCC scripts/conmakehash HOSTCC scripts/bin2c CC lib/swiotlb.o lib/swiotlb.c: In function 'swiotlb_map_page': lib/swiotlb.c:635: error: implicit declaration of function 'swiotlb_tbl_unmap_single' make[1]: *** [lib/swiotlb.o] Error 1 make: *** [lib/swiotlb.o] Error 2
--
Shawn
Quoted 5 lines · Greg KH
Quoted 4 lines · Stefan Bader
Quoted 3 lines
FUJITA Tomonori (1):
swiotlb: fix wrong panic
Quoted 7 lines
Quoted 3 lines
This one breaks compilation of 64bit for me as
swiotlb_tbl_unmap_single()does not exist. It does not look like it is a simple single patch that would get it back to 2.6.32.I don't understand. Is this patch somehow broken? Is there an additional patch I need to apply to fix the build issue? I need more information here.
I think this will fix it.
Fix compilation error introduced in 484d82b6.
do_unmap_single() was renamed to swiotlb_tbl_unmap_single() in bfc5501f. Use the old name unless/until that change is also backported.
lib/swiotlb.c +1 -1
@@ -632,7 +632,7 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,* Ensure that the address returned is DMA'ble */ if (!dma_capable (dev, dev_addr, size)) { -swiotlb_tbl_unmap_single (dev, map, size, dir); +do_unmap_single (dev, map, size, dir); dev_addr =swiotlb_virt_to_bus (dev, io_tlb_overflow_buffer); }
David
Signature · 2 lines
David Engel [email protected]