summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-11-28 23:52:14 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-11-28 23:52:14 -0800
commit7f357f99380cf5927ddd66e49d2ebc23f19814eb (patch)
tree83a6fe1cb66f901581d336f5fe041f1f11cc7edb
parent1cdfa0d9da1fa7df23ba6dee3267420845d192b2 (diff)
parentcaf393738350f8165b1510aefc0b61e03fa96ab7 (diff)
Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
-rw-r--r--MAINTAINERS7
-rw-r--r--drivers/block/cciss.c2
-rw-r--r--drivers/media/video/tuner.c16
-rw-r--r--drivers/net/e100.c31
-rw-r--r--drivers/video/aty/atyfb_base.c4
-rw-r--r--drivers/video/fbmem.c5
-rw-r--r--include/asm-x86_64/hw_irq.h2
-rw-r--r--mm/mlock.c6
8 files changed, 38 insertions, 35 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 80a5092e11b8..30993e54f19c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1457,11 +1457,8 @@ L: linux-mips@linux-mips.org
S: Maintained
MISCELLANEOUS MCA-SUPPORT
-P: David Weinehall
-M: Project MCA Team <mcalinux@acc.umu.se>
-M: David Weinehall <tao@acc.umu.se>
-W: http://www.acc.umu.se/~tao/
-W: http://www.acc.umu.se/~mcalinux/
+P: James Bottomley
+M: jejb@steeleye.com
L: linux-kernel@vger.kernel.org
S: Maintained
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index fb7774a4baf9..f2c29756e6ed 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -809,7 +809,7 @@ static int cciss_ioctl(struct inode *inode, struct file *filep,
luninfo.num_opens = drv->usage_count;
luninfo.num_parts = 0;
/* count partitions 1 to 15 with sizes > 0 */
- for(i=1; i <MAX_PART; i++) {
+ for (i = 0; i < MAX_PART - 1; i++) {
if (!disk->part[i])
continue;
if (disk->part[i]->nr_sects != 0)
diff --git a/drivers/media/video/tuner.c b/drivers/media/video/tuner.c
index faf6c56c60a1..ec6eb43caafa 100644
--- a/drivers/media/video/tuner.c
+++ b/drivers/media/video/tuner.c
@@ -30,24 +30,24 @@ I2C_CLIENT_INSMOD;
/* insmod options used at init time => read/only */
static unsigned int type = UNSET;
static unsigned int addr = 0;
-module_param(type, int, 444);
-module_param(addr, int, 444);
+module_param(type, int, 0444);
+module_param(addr, int, 0444);
/* insmod options used at runtime => read/write */
static unsigned int debug = 0;
static unsigned int tv_antenna = 1;
static unsigned int radio_antenna = 0;
static unsigned int optimize_vco = 1;
-module_param(debug, int, 644);
-module_param(tv_antenna, int, 644);
-module_param(radio_antenna, int, 644);
-module_param(optimize_vco, int, 644);
+module_param(debug, int, 0644);
+module_param(tv_antenna, int, 0644);
+module_param(radio_antenna, int, 0644);
+module_param(optimize_vco, int, 0644);
static unsigned int tv_range[2] = { 44, 958 };
static unsigned int radio_range[2] = { 65, 108 };
-module_param_array(tv_range, int, NULL, 644);
-module_param_array(radio_range, int, NULL, 644);
+module_param_array(tv_range, int, NULL, 0644);
+module_param_array(radio_range, int, NULL, 0644);
MODULE_DESCRIPTION("device driver for various TV and TV+FM radio tuners");
MODULE_AUTHOR("Ralph Metzler, Gerd Knorr, Gunther Mayer");
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index af78c85f11d9..c075355aabbb 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2204,33 +2204,38 @@ static int __devinit e100_probe(struct pci_dev *pdev,
goto err_out_disable_pdev;
}
- nic->csr = ioremap(pci_resource_start(pdev, 0), sizeof(struct csr));
- if(!nic->csr) {
- DPRINTK(PROBE, ERR, "Cannot map device registers, aborting.\n");
- err = -ENOMEM;
- goto err_out_free_res;
- }
-
- e100_hw_reset(nic);
-
- pci_set_master(pdev);
-
if((err = pci_set_dma_mask(pdev, 0xFFFFFFFFULL))) {
DPRINTK(PROBE, ERR, "No usable DMA configuration, aborting.\n");
- goto err_out_iounmap;
+ goto err_out_free_res;
}
SET_MODULE_OWNER(netdev);
SET_NETDEV_DEV(netdev, &pdev->dev);
+ nic->csr = ioremap(pci_resource_start(pdev, 0), sizeof(struct csr));
+ if(!nic->csr) {
+ DPRINTK(PROBE, ERR, "Cannot map device registers, aborting.\n");
+ err = -ENOMEM;
+ goto err_out_free_res;
+ }
+
if(ent->driver_data)
nic->flags |= ich;
else
nic->flags &= ~ich;
+ e100_get_defaults(nic);
+
spin_lock_init(&nic->cb_lock);
spin_lock_init(&nic->cmd_lock);
+ /* Reset the device before pci_set_master() in case device is in some
+ * funky state and has an interrupt pending - hint: we don't have the
+ * interrupt handler registered yet. */
+ e100_hw_reset(nic);
+
+ pci_set_master(pdev);
+
init_timer(&nic->watchdog);
nic->watchdog.function = e100_watchdog;
nic->watchdog.data = (unsigned long)nic;
@@ -2243,8 +2248,6 @@ static int __devinit e100_probe(struct pci_dev *pdev,
goto err_out_iounmap;
}
- e100_get_defaults(nic);
- e100_hw_reset(nic);
e100_phy_init(nic);
if((err = e100_eeprom_load(nic)))
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c
index 11d5466abe47..b78b77f064ae 100644
--- a/drivers/video/aty/atyfb_base.c
+++ b/drivers/video/aty/atyfb_base.c
@@ -440,11 +440,11 @@ static int __devinit correct_chipset(struct atyfb_par *par)
switch(par->pci_id) {
#ifdef CONFIG_FB_ATY_GX
case PCI_CHIP_MACH64GX:
- if(type != 0x00d7);
+ if(type != 0x00d7)
return -ENODEV;
break;
case PCI_CHIP_MACH64CX:
- if(type != 0x0057);
+ if(type != 0x0057)
return -ENODEV;
break;
#endif
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index fc10c0e4d9dc..e2b1e87c7792 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -725,7 +725,10 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
fb_set_cmap(&info->cmap, info);
fb_var_to_videomode(&mode, &info->var);
- fb_add_videomode(&mode, &info->modelist);
+
+ if (info->modelist.prev && info->modelist.next &&
+ !list_empty(&info->modelist))
+ fb_add_videomode(&mode, &info->modelist);
if (info->flags & FBINFO_MISC_MODECHANGEUSER) {
struct fb_event event;
diff --git a/include/asm-x86_64/hw_irq.h b/include/asm-x86_64/hw_irq.h
index 4a42816524a8..767e11abd5c5 100644
--- a/include/asm-x86_64/hw_irq.h
+++ b/include/asm-x86_64/hw_irq.h
@@ -130,7 +130,7 @@ __asm__( \
"push $" #nr "-256 ; " \
"jmp common_interrupt");
-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP)
+#if defined(CONFIG_X86_IO_APIC)
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {
if (IO_APIC_IRQ(i))
send_IPI_self(IO_APIC_VECTOR(i));
diff --git a/mm/mlock.c b/mm/mlock.c
index 4a00277487ba..a75902f0485e 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -211,10 +211,10 @@ int user_shm_lock(size_t size, struct user_struct *user)
unsigned long lock_limit, locked;
int allowed = 0;
- spin_lock(&shmlock_user_lock);
- locked = size >> PAGE_SHIFT;
+ locked = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
lock_limit >>= PAGE_SHIFT;
+ spin_lock(&shmlock_user_lock);
if (locked + user->locked_shm > lock_limit && !capable(CAP_IPC_LOCK))
goto out;
get_uid(user);
@@ -228,7 +228,7 @@ out:
void user_shm_unlock(size_t size, struct user_struct *user)
{
spin_lock(&shmlock_user_lock);
- user->locked_shm -= (size >> PAGE_SHIFT);
+ user->locked_shm -= (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
spin_unlock(&shmlock_user_lock);
free_uid(user);
}