Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 40917
b: refs/heads/master
c: dc791d4
h: refs/heads/master
i:
  40915: 6e8af57
v: v3
  • Loading branch information
Linus Torvalds committed Nov 14, 2006
1 parent 5e90698 commit 122ee3d
Show file tree
Hide file tree
Showing 19 changed files with 99 additions and 66 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 253b92ecbd3d2e9f5a79fc7632c89ac74bff16c4
refs/heads/master: dc791d479802a784836a236d4a77a5325be545c4
10 changes: 9 additions & 1 deletion trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -3072,6 +3072,13 @@ L: video4linux-list@redhat.com
W: http://www.linux-projects.org
S: Maintained

USB GADGET/PERIPHERAL SUBSYSTEM
P: David Brownell
M: dbrownell@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/gadget
S: Maintained

USB HID/HIDBP DRIVERS
P: Vojtech Pavlik
M: vojtech@suse.cz
Expand Down Expand Up @@ -3255,10 +3262,11 @@ L: linux-usb-users@lists.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net
S: Maintained

USB "USBNET" DRIVER
USB "USBNET" DRIVER FRAMEWORK
P: David Brownell
M: dbrownell@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/usbnet
S: Maintained

USB W996[87]CF DRIVER
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/i386/pci/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,13 +255,13 @@ static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, i
*/
static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
{
static const unsigned int pirqmap[4] = { 3, 2, 5, 1 };
static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
return read_config_nybble(router, 0x55, pirqmap[pirq-1]);
}

static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
{
static const unsigned int pirqmap[4] = { 3, 2, 5, 1 };
static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
write_config_nybble(router, 0x55, pirqmap[pirq-1], irq);
return 1;
}
Expand Down
4 changes: 3 additions & 1 deletion trunk/arch/ia64/mm/hugetlbpage.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,10 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr)
* Don't actually need to do any preparation, but need to make sure
* the address is in the right region.
*/
int prepare_hugepage_range(unsigned long addr, unsigned long len)
int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff)
{
if (pgoff & (~HPAGE_MASK >> PAGE_SHIFT))
return -EINVAL;
if (len & ~HPAGE_MASK)
return -EINVAL;
if (addr & ~HPAGE_MASK)
Expand Down
8 changes: 6 additions & 2 deletions trunk/arch/powerpc/mm/hugetlbpage.c
Original file line number Diff line number Diff line change
Expand Up @@ -491,11 +491,15 @@ static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas)
return 0;
}

int prepare_hugepage_range(unsigned long addr, unsigned long len)
int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff)
{
int err = 0;

if ( (addr+len) < addr )
if (pgoff & (~HPAGE_MASK >> PAGE_SHIFT))
return -EINVAL;
if (len & ~HPAGE_MASK)
return -EINVAL;
if (addr & ~HPAGE_MASK)
return -EINVAL;

if (addr < 0x100000000UL)
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/ata/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -5957,7 +5957,7 @@ static void __exit ata_exit(void)
destroy_workqueue(ata_aux_wq);
}

module_init(ata_init);
subsys_initcall(ata_init);
module_exit(ata_exit);

static unsigned long ratelimit_time;
Expand Down
6 changes: 6 additions & 0 deletions trunk/drivers/block/cciss.c
Original file line number Diff line number Diff line change
Expand Up @@ -1300,6 +1300,12 @@ static void cciss_softirq_done(struct request *rq)

complete_buffers(rq->bio, rq->errors);

if (blk_fs_request(rq)) {
const int rw = rq_data_dir(rq);

disk_stat_add(rq->rq_disk, sectors[rw], rq->nr_sectors);
}

#ifdef CCISS_DEBUG
printk("Done with %p\n", rq);
#endif /* CCISS_DEBUG */
Expand Down
15 changes: 11 additions & 4 deletions trunk/drivers/block/cpqarray.c
Original file line number Diff line number Diff line change
Expand Up @@ -998,6 +998,7 @@ static inline void complete_buffers(struct bio *bio, int ok)
*/
static inline void complete_command(cmdlist_t *cmd, int timeout)
{
struct request *rq = cmd->rq;
int ok=1;
int i, ddir;

Expand Down Expand Up @@ -1029,12 +1030,18 @@ static inline void complete_command(cmdlist_t *cmd, int timeout)
pci_unmap_page(hba[cmd->ctlr]->pci_dev, cmd->req.sg[i].addr,
cmd->req.sg[i].size, ddir);

complete_buffers(cmd->rq->bio, ok);
complete_buffers(rq->bio, ok);

add_disk_randomness(cmd->rq->rq_disk);
if (blk_fs_request(rq)) {
const int rw = rq_data_dir(rq);

DBGPX(printk("Done with %p\n", cmd->rq););
end_that_request_last(cmd->rq, ok ? 1 : -EIO);
disk_stat_add(rq->rq_disk, sectors[rw], rq->nr_sectors);
}

add_disk_randomness(rq->rq_disk);

DBGPX(printk("Done with %p\n", rq););
end_that_request_last(rq, ok ? 1 : -EIO);
}

/*
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/ide/legacy/hd.c
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ static void read_intr(void)
#ifdef DEBUG
printk("%s: read: sector %ld, remaining = %ld, buffer=%p\n",
req->rq_disk->disk_name, req->sector, req->nr_sectors,
req->buffer+512));
req->buffer+512);
#endif
if (req->current_nr_sectors <= 0)
end_request(req, 1);
Expand Down
27 changes: 0 additions & 27 deletions trunk/drivers/pci/quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -1460,33 +1460,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x2609, quirk_intel_pcie_pm);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260a, quirk_intel_pcie_pm);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260b, quirk_intel_pcie_pm);

/*
* Fixup the cardbus bridges on the IBM Dock II docking station
*/
static void __devinit quirk_ibm_dock2_cardbus(struct pci_dev *dev)
{
u32 val;

/*
* tie the 2 interrupt pins to INTA, and configure the
* multifunction routing register to handle this.
*/
if ((dev->subsystem_vendor == PCI_VENDOR_ID_IBM) &&
(dev->subsystem_device == 0x0148)) {
printk(KERN_INFO "PCI: Found IBM Dock II Cardbus Bridge "
"applying quirk\n");
pci_read_config_dword(dev, 0x8c, &val);
val = ((val & 0xffffff00) | 0x1002);
pci_write_config_dword(dev, 0x8c, val);
pci_read_config_dword(dev, 0x80, &val);
val = ((val & 0x00ffff00) | 0x2864c077);
pci_write_config_dword(dev, 0x80, val);
}
}

DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1420,
quirk_ibm_dock2_cardbus);

static void __devinit quirk_netmos(struct pci_dev *dev)
{
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/video/nvidia/nv_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ static void nv10GetConfig(struct nvidia_par *par)
#endif

dev = pci_find_slot(0, 1);
if ((par->Chipset && 0xffff) == 0x01a0) {
if ((par->Chipset & 0xffff) == 0x01a0) {
int amt = 0;

pci_read_config_dword(dev, 0x7c, &amt);
Expand Down
14 changes: 13 additions & 1 deletion trunk/fs/autofs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ void autofs_kill_sb(struct super_block *sb)
struct autofs_sb_info *sbi = autofs_sbi(sb);
unsigned int n;

/*
* In the event of a failure in get_sb_nodev the superblock
* info is not present so nothing else has been setup, so
* just exit when we are called from deactivate_super.
*/
if (!sbi)
return;

if ( !sbi->catatonic )
autofs_catatonic_mode(sbi); /* Free wait queues, close pipe */

Expand Down Expand Up @@ -136,7 +144,8 @@ int autofs_fill_super(struct super_block *s, void *data, int silent)

s->s_fs_info = sbi;
sbi->magic = AUTOFS_SBI_MAGIC;
sbi->catatonic = 0;
sbi->pipe = NULL;
sbi->catatonic = 1;
sbi->exp_timeout = 0;
sbi->oz_pgrp = process_group(current);
autofs_initialize_hash(&sbi->dirhash);
Expand Down Expand Up @@ -180,6 +189,7 @@ int autofs_fill_super(struct super_block *s, void *data, int silent)
if ( !pipe->f_op || !pipe->f_op->write )
goto fail_fput;
sbi->pipe = pipe;
sbi->catatonic = 0;

/*
* Success! Install the root dentry now to indicate completion.
Expand All @@ -198,6 +208,8 @@ int autofs_fill_super(struct super_block *s, void *data, int silent)
iput(root_inode);
fail_free:
kfree(sbi);
s->s_fs_info = NULL;
kill_anon_super(s);
fail_unlock:
return -EINVAL;
}
Expand Down
1 change: 1 addition & 0 deletions trunk/fs/autofs/waitq.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ void autofs_catatonic_mode(struct autofs_sb_info *sbi)
wq = nwq;
}
fput(sbi->pipe); /* Close the pipe */
sbi->pipe = NULL;
autofs_hash_dputall(&sbi->dirhash); /* Remove all dentry pointers */
}

Expand Down
17 changes: 16 additions & 1 deletion trunk/fs/autofs4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ static void autofs4_force_release(struct autofs_sb_info *sbi)
struct dentry *this_parent = sbi->sb->s_root;
struct list_head *next;

if (!sbi->sb->s_root)
return;

spin_lock(&dcache_lock);
repeat:
next = this_parent->d_subdirs.next;
Expand Down Expand Up @@ -146,6 +149,14 @@ void autofs4_kill_sb(struct super_block *sb)
{
struct autofs_sb_info *sbi = autofs4_sbi(sb);

/*
* In the event of a failure in get_sb_nodev the superblock
* info is not present so nothing else has been setup, so
* just exit when we are called from deactivate_super.
*/
if (!sbi)
return;

sb->s_fs_info = NULL;

if ( !sbi->catatonic )
Expand Down Expand Up @@ -310,7 +321,8 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
s->s_fs_info = sbi;
sbi->magic = AUTOFS_SBI_MAGIC;
sbi->pipefd = -1;
sbi->catatonic = 0;
sbi->pipe = NULL;
sbi->catatonic = 1;
sbi->exp_timeout = 0;
sbi->oz_pgrp = process_group(current);
sbi->sb = s;
Expand Down Expand Up @@ -388,6 +400,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
goto fail_fput;
sbi->pipe = pipe;
sbi->pipefd = pipefd;
sbi->catatonic = 0;

/*
* Success! Install the root dentry now to indicate completion.
Expand All @@ -412,6 +425,8 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
kfree(ino);
fail_free:
kfree(sbi);
s->s_fs_info = NULL;
kill_anon_super(s);
fail_unlock:
return -EINVAL;
}
Expand Down
6 changes: 2 additions & 4 deletions trunk/fs/autofs4/waitq.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,8 @@ void autofs4_catatonic_mode(struct autofs_sb_info *sbi)
wake_up_interruptible(&wq->queue);
wq = nwq;
}
if (sbi->pipe) {
fput(sbi->pipe); /* Close the pipe */
sbi->pipe = NULL;
}
fput(sbi->pipe); /* Close the pipe */
sbi->pipe = NULL;
}

static int autofs4_write(struct file *file, const void *addr, int bytes)
Expand Down
21 changes: 8 additions & 13 deletions trunk/fs/hugetlbfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,24 +62,19 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)
loff_t len, vma_len;
int ret;

if (vma->vm_pgoff & (HPAGE_SIZE / PAGE_SIZE - 1))
return -EINVAL;

if (vma->vm_start & ~HPAGE_MASK)
return -EINVAL;

if (vma->vm_end & ~HPAGE_MASK)
return -EINVAL;

if (vma->vm_end - vma->vm_start < HPAGE_SIZE)
return -EINVAL;
/*
* vma alignment has already been checked by prepare_hugepage_range.
* If you add any error returns here, do so after setting VM_HUGETLB,
* so is_vm_hugetlb_page tests below unmap_region go the right way
* when do_mmap_pgoff unwinds (may be important on powerpc and ia64).
*/
vma->vm_flags |= VM_HUGETLB | VM_RESERVED;
vma->vm_ops = &hugetlb_vm_ops;

vma_len = (loff_t)(vma->vm_end - vma->vm_start);

mutex_lock(&inode->i_mutex);
file_accessed(file);
vma->vm_flags |= VM_HUGETLB | VM_RESERVED;
vma->vm_ops = &hugetlb_vm_ops;

ret = -ENOMEM;
len = vma_len + ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
Expand Down
10 changes: 7 additions & 3 deletions trunk/include/linux/hugetlb.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,20 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb, unsigned long addr,
* If the arch doesn't supply something else, assume that hugepage
* size aligned regions are ok without further preparation.
*/
static inline int prepare_hugepage_range(unsigned long addr, unsigned long len)
static inline int prepare_hugepage_range(unsigned long addr, unsigned long len,
pgoff_t pgoff)
{
if (pgoff & (~HPAGE_MASK >> PAGE_SHIFT))
return -EINVAL;
if (len & ~HPAGE_MASK)
return -EINVAL;
if (addr & ~HPAGE_MASK)
return -EINVAL;
return 0;
}
#else
int prepare_hugepage_range(unsigned long addr, unsigned long len);
int prepare_hugepage_range(unsigned long addr, unsigned long len,
pgoff_t pgoff);
#endif

#ifndef ARCH_HAS_SETCLEAR_HUGE_PTE
Expand Down Expand Up @@ -107,7 +111,7 @@ static inline unsigned long hugetlb_total_pages(void)
#define hugetlb_report_meminfo(buf) 0
#define hugetlb_report_node_meminfo(n, buf) 0
#define follow_huge_pmd(mm, addr, pmd, write) NULL
#define prepare_hugepage_range(addr, len) (-EINVAL)
#define prepare_hugepage_range(addr,len,pgoff) (-EINVAL)
#define pmd_huge(x) 0
#define is_hugepage_only_range(mm, addr, len) 0
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; })
Expand Down
9 changes: 7 additions & 2 deletions trunk/kernel/irq/manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ int setup_irq(unsigned int irq, struct irqaction *new)
{
struct irq_desc *desc = irq_desc + irq;
struct irqaction *old, **p;
const char *old_name = NULL;
unsigned long flags;
int shared = 0;

Expand Down Expand Up @@ -255,8 +256,10 @@ int setup_irq(unsigned int irq, struct irqaction *new)
* set the trigger type must match.
*/
if (!((old->flags & new->flags) & IRQF_SHARED) ||
((old->flags ^ new->flags) & IRQF_TRIGGER_MASK))
((old->flags ^ new->flags) & IRQF_TRIGGER_MASK)) {
old_name = old->name;
goto mismatch;
}

#if defined(CONFIG_IRQ_PER_CPU)
/* All handlers must agree on per-cpuness */
Expand Down Expand Up @@ -322,11 +325,13 @@ int setup_irq(unsigned int irq, struct irqaction *new)
return 0;

mismatch:
spin_unlock_irqrestore(&desc->lock, flags);
if (!(new->flags & IRQF_PROBE_SHARED)) {
printk(KERN_ERR "IRQ handler type mismatch for IRQ %d\n", irq);
if (old_name)
printk(KERN_ERR "current handler: %s\n", old_name);
dump_stack();
}
spin_unlock_irqrestore(&desc->lock, flags);
return -EBUSY;
}

Expand Down
Loading

0 comments on commit 122ee3d

Please sign in to comment.