]> git.neil.brown.name Git - history.git/commitdiff
Import 2.2.10pre5 2.2.10pre5
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:19:06 +0000 (15:19 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:19:06 +0000 (15:19 -0500)
drivers/block/ide.c
drivers/net/ibmtr.c
drivers/net/irda/irport.c
fs/binfmt_elf.c
fs/exec.c

index 9cda5ccf7d604240afebdc5b89aebace30f036d7..880f12cdfd9c1be2916f8ecea32503cfadf06568 100644 (file)
@@ -272,7 +272,8 @@ int drive_is_flashcard (ide_drive_t *drive)
        if (drive->removable && id != NULL) {
                if (!strncmp(id->model, "KODAK ATA_FLASH", 15)  /* Kodak */
                 || !strncmp(id->model, "Hitachi CV", 10)               /* Hitachi */
-                || !strncmp(id->model, "SunDisk SDCFB", 13))   /* SunDisk */
+                || !strncmp(id->model, "SunDisk SDCFB", 13)    /* SunDisk */
+                || !strncmp(id->model, "HAGIWARA HPC", 12))    /* Hagiwara */
                {
                        return 1;       /* yes, it is a flash memory card */
                }
@@ -1732,6 +1733,8 @@ void ide_unregister (unsigned int index)
        sti();
        for (unit = 0; unit < MAX_DRIVES; ++unit) {
                drive = &hwif->drives[unit];
+               if (!drive->present)
+                       continue;
                minor = drive->select.b.unit << PARTN_BITS;
                for (p = 0; p < (1<<PARTN_BITS); ++p) {
                        if (drive->part[p].nr_sects > 0) {
index 780b8a938f98cb327a1eb52ca6f5287fd6013bce..cc690c7fae666360894aa1cb25fcf5c9fb132cd1 100644 (file)
@@ -513,7 +513,7 @@ __initfunc(static int ibmtr_probe1(struct device *dev, int PIOaddr))
        /* How much shared RAM is on adapter ? */
 #ifdef PCMCIA
        ti->avail_shared_ram = pcmcia_reality_check(get_sram_size(ti));
-       ibmtr_mem_base = ti->sram_base ; 
+       ibmtr_mem_base = ti->sram_base << 12 
 #else
        ti->avail_shared_ram = get_sram_size(ti);
 #endif
@@ -833,6 +833,9 @@ static int tok_close(struct device *dev)
                        (int)readb(ti->srb + offsetof(struct srb_close_adapter, ret_code)));
 
         dev->start = 0;
+#ifdef PCMCIA
+       ti->sram = 0 ;
+#endif
        DPRINTK("Adapter closed.\n");
        MOD_DEC_USE_COUNT;
 
index 5fb0cd4f28d22025cb0f2466cc30faf7726602bd..e813fe8a4ce76583f3b5188f7236bca573682530 100644 (file)
@@ -321,7 +321,7 @@ void irport_change_speed(struct irda_device *idev, int speed)
        /* Turn on interrups */
        outb(UART_IER_RLSI|UART_IER_RDI|UART_IER_THRI, iobase+UART_IER);
 
-       spin_unlock_irqrestore(&self->lock, flags);
+       spin_unlock_irqrestore(&idev->lock, flags);
 }
 
 /*
index 82f75d1e65f8327accf042663dc260a5a090bbe0..3211c4e8f77a24b945f951dd1045b7126e808d20 100644 (file)
@@ -449,6 +449,8 @@ do_load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs)
 
        retval = -ENOMEM;
        size = elf_ex.e_phentsize * elf_ex.e_phnum;
+       if (size > 65536)
+               goto out;
        elf_phdata = (struct elf_phdr *) kmalloc(size, GFP_KERNEL);
        if (!elf_phdata)
                goto out;
index cf5dc765b222c1e922ec50410dc4e1b3fc44ddd1..767be4f2d01e3896ba914fa8b9fb5aacac870089 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -257,7 +257,11 @@ unsigned long copy_strings(int argc,char ** argv,unsigned long *page,
                        set_fs(KERNEL_DS);
                get_user(str, argv+argc);
                if (!str)
-                       panic("VFS: argc is wrong");
+               {
+                       set_fs(old_fs);
+                       return 0;
+//                     panic("VFS: argc is wrong");
+               }
                if (from_kmem == 1)
                        set_fs(old_fs);
                len = strlen_user(str); /* includes the '\0' */