Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 23 May 2009 20:42:53 +0000 (13:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 23 May 2009 20:42:53 +0000 (13:42 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
  [CIFS] Avoid open on possible directories since Samba now rejects them

13 files changed:
drivers/ide/ide-io.c
drivers/ide/ide-iops.c
drivers/ide/ide-lib.c
drivers/ide/ide-probe.c
drivers/ide/via82cxxx.c
drivers/serial/icom.c
fs/nilfs2/ioctl.c
include/linux/ide.h
include/linux/pci_ids.h
sound/drivers/pcsp/pcsp_mixer.c
sound/pci/ac97/ac97_patch.c
sound/pci/ca0106/ca0106_mixer.c
sound/pci/hda/patch_realtek.c

index 35dc38d3b2c58d2f40e3a299f5b6c0832f88da82..6415a2e2ba87febae0cfa6e9b8342f2dbd190748 100644 (file)
@@ -696,7 +696,7 @@ void ide_timer_expiry (unsigned long data)
                }
                spin_lock_irq(&hwif->lock);
                enable_irq(hwif->irq);
-               if (startstop == ide_stopped) {
+               if (startstop == ide_stopped && hwif->polling == 0) {
                        ide_unlock_port(hwif);
                        plug_device = 1;
                }
@@ -868,7 +868,7 @@ irqreturn_t ide_intr (int irq, void *dev_id)
         * same irq as is currently being serviced here, and Linux
         * won't allow another of the same (on any CPU) until we return.
         */
-       if (startstop == ide_stopped) {
+       if (startstop == ide_stopped && hwif->polling == 0) {
                BUG_ON(hwif->handler);
                ide_unlock_port(hwif);
                plug_device = 1;
index c19a221b1e183e9f9764d8b9ff70efc0c1499f94..06fe002116ecc733a1015216d7676e4b24439070 100644 (file)
@@ -206,8 +206,6 @@ EXPORT_SYMBOL_GPL(ide_in_drive_list);
 
 /*
  * Early UDMA66 devices don't set bit14 to 1, only bit13 is valid.
- * We list them here and depend on the device side cable detection for them.
- *
  * Some optical devices with the buggy firmwares have the same problem.
  */
 static const struct drive_list_entry ivb_list[] = {
@@ -251,10 +249,25 @@ u8 eighty_ninty_three(ide_drive_t *drive)
         * - force bit13 (80c cable present) check also for !ivb devices
         *   (unless the slave device is pre-ATA3)
         */
-       if ((id[ATA_ID_HW_CONFIG] & 0x4000) ||
-           (ivb && (id[ATA_ID_HW_CONFIG] & 0x2000)))
+       if (id[ATA_ID_HW_CONFIG] & 0x4000)
                return 1;
 
+       if (ivb) {
+               const char *model = (char *)&id[ATA_ID_PROD];
+
+               if (strstr(model, "TSSTcorp CDDVDW SH-S202")) {
+                       /*
+                        * These ATAPI devices always report 80c cable
+                        * so we have to depend on the host in this case.
+                        */
+                       if (hwif->cbl == ATA_CBL_PATA80)
+                               return 1;
+               } else {
+                       /* Depend on the device side cable detection. */
+                       if (id[ATA_ID_HW_CONFIG] & 0x2000)
+                               return 1;
+               }
+       }
 no_80w:
        if (drive->dev_flags & IDE_DFLAG_UDMA33_WARNED)
                return 0;
index 56ff8c46c7d10a4cf0eefa27bd69769ac52c7953..2148df836ce7f19f48b8ed26f8ae3f01b4700ff5 100644 (file)
@@ -31,24 +31,6 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)
                blk_queue_bounce_limit(drive->queue, addr);
 }
 
-static void ide_dump_opcode(ide_drive_t *drive)
-{
-       struct request *rq = drive->hwif->rq;
-       struct ide_cmd *cmd = NULL;
-
-       if (!rq)
-               return;
-
-       if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE)
-               cmd = rq->special;
-
-       printk(KERN_ERR "ide: failed opcode was: ");
-       if (cmd == NULL)
-               printk(KERN_CONT "unknown\n");
-       else
-               printk(KERN_CONT "0x%02x\n", cmd->tf.command);
-}
-
 u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48)
 {
        struct ide_taskfile *tf = &cmd->tf;
@@ -91,7 +73,7 @@ static void ide_dump_sector(ide_drive_t *drive)
 
 static void ide_dump_ata_error(ide_drive_t *drive, u8 err)
 {
-       printk(KERN_ERR "{ ");
+       printk(KERN_CONT "{ ");
        if (err & ATA_ABORTED)
                printk(KERN_CONT "DriveStatusError ");
        if (err & ATA_ICRC)
@@ -121,7 +103,7 @@ static void ide_dump_ata_error(ide_drive_t *drive, u8 err)
 
 static void ide_dump_atapi_error(ide_drive_t *drive, u8 err)
 {
-       printk(KERN_ERR "{ ");
+       printk(KERN_CONT "{ ");
        if (err & ATAPI_ILI)
                printk(KERN_CONT "IllegalLengthIndication ");
        if (err & ATAPI_EOM)
@@ -179,7 +161,10 @@ u8 ide_dump_status(ide_drive_t *drive, const char *msg, u8 stat)
                else
                        ide_dump_atapi_error(drive, err);
        }
-       ide_dump_opcode(drive);
+
+       printk(KERN_ERR "%s: possibly failed opcode: 0x%02x\n",
+               drive->name, drive->hwif->cmd.tf.command);
+
        return err;
 }
 EXPORT_SYMBOL(ide_dump_status);
index 7f264ed1141b9ebd2e2dacdc933c5994cfbdf618..c895ed52b2e870909cd103d1e82c7318288a16f6 100644 (file)
@@ -295,7 +295,7 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
 
        timeout = ((cmd == ATA_CMD_ID_ATA) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
 
-       if (ide_busy_sleep(hwif, timeout, use_altstatus))
+       if (ide_busy_sleep(drive, timeout, use_altstatus))
                return 1;
 
        /* wait for IRQ and ATA_DRQ */
@@ -316,8 +316,9 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
        return rc;
 }
 
-int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
+int ide_busy_sleep(ide_drive_t *drive, unsigned long timeout, int altstatus)
 {
+       ide_hwif_t *hwif = drive->hwif;
        u8 stat;
 
        timeout += jiffies;
@@ -330,6 +331,8 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
                        return 0;
        } while (time_before(jiffies, timeout));
 
+       printk(KERN_ERR "%s: timeout in %s\n", drive->name, __func__);
+
        return 1;       /* drive timed-out */
 }
 
@@ -420,7 +423,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
                        tp_ops->dev_select(drive);
                        msleep(50);
                        tp_ops->exec_command(hwif, ATA_CMD_DEV_RESET);
-                       (void)ide_busy_sleep(hwif, WAIT_WORSTCASE, 0);
+                       (void)ide_busy_sleep(drive, WAIT_WORSTCASE, 0);
                        rc = ide_dev_read_id(drive, cmd, id);
                }
 
index 3ff7231e48582187a0d254069439a2f0737894ec..028de26a25feedb323336df57c10039e7b85ab9b 100644 (file)
@@ -67,6 +67,7 @@ static struct via_isa_bridge {
        u8 udma_mask;
        u8 flags;
 } via_isa_bridges[] = {
+       { "vx855",      PCI_DEVICE_ID_VIA_VX855,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
        { "vx800",      PCI_DEVICE_ID_VIA_VX800,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
        { "cx700",      PCI_DEVICE_ID_VIA_CX700,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
        { "vt8237s",    PCI_DEVICE_ID_VIA_8237S,    0x00, 0x2f, ATA_UDMA6, VIA_BAD_AST },
@@ -474,6 +475,7 @@ static const struct pci_device_id via_pci_tbl[] = {
        { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C576_1),  0 },
        { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C586_1),  0 },
        { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_CX700_IDE), 0 },
+       { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_VX855_IDE), 0 },
        { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_6410),      1 },
        { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_SATA_EIDE), 1 },
        { 0, },
index 6579e2be1dd133a60fb9d63c0ec06bd02d941687..a461b3b2c72dcd63d79e02b1188843a87e092f13 100644 (file)
@@ -1472,8 +1472,8 @@ static void icom_remove_adapter(struct icom_adapter *icom_adapter)
 
        free_irq(icom_adapter->pci_dev->irq, (void *) icom_adapter);
        iounmap(icom_adapter->base_addr);
-       icom_free_adapter(icom_adapter);
        pci_release_regions(icom_adapter->pci_dev);
+       icom_free_adapter(icom_adapter);
 }
 
 static void icom_kref_release(struct kref *kref)
index 50ff3f2cdf24de8450340efca40acf6235aee23d..d6759b92006fe8b17d7c81ba79eb158e1665c0a9 100644 (file)
@@ -576,7 +576,7 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp,
        ret = nilfs_clean_segments(inode->i_sb, argv, kbufs);
 
  out_free:
-       while (--n > 0)
+       while (--n >= 0)
                vfree(kbufs[n]);
        kfree(kbufs[4]);
        return ret;
index ff65fffb078f6e9475983190da859bfecb942740..9fed365a598b89845d83271f93d9fe3affef15f2 100644 (file)
@@ -1109,7 +1109,7 @@ void ide_fix_driveid(u16 *);
 
 extern void ide_fixstring(u8 *, const int, const int);
 
-int ide_busy_sleep(ide_hwif_t *, unsigned long, int);
+int ide_busy_sleep(ide_drive_t *, unsigned long, int);
 
 int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
 
index 06ba90c211a53b694a13fb371cbde61ff963b75b..0f71812d67d327283b551d2a3c84b762fa2617b4 100644 (file)
 #define PCI_DEVICE_ID_VIA_82C598_1     0x8598
 #define PCI_DEVICE_ID_VIA_838X_1       0xB188
 #define PCI_DEVICE_ID_VIA_83_87XX_1    0xB198
-#define PCI_DEVICE_ID_VIA_C409_IDE     0XC409
+#define PCI_DEVICE_ID_VIA_VX855_IDE    0xC409
 #define PCI_DEVICE_ID_VIA_ANON         0xFFFF
 
 #define PCI_VENDOR_ID_SIEMENS           0x110A
index 771955a9be713a14b7da99472b8adc9a0c0706a4..199b0337714279318c83c30070794ababc719329 100644 (file)
@@ -51,7 +51,7 @@ static int pcsp_treble_info(struct snd_kcontrol *kcontrol,
        if (uinfo->value.enumerated.item > chip->max_treble)
                uinfo->value.enumerated.item = chip->max_treble;
        sprintf(uinfo->value.enumerated.name, "%lu",
-                       PCSP_CALC_RATE(uinfo->value.enumerated.item));
+               (unsigned long)PCSP_CALC_RATE(uinfo->value.enumerated.item));
        return 0;
 }
 
index 81bc93e5f1e30f5b6abb06f6b0140d0c752e4672..7337abdbe4e37e0642f5b050ae7f7a00b93b12b9 100644 (file)
@@ -958,10 +958,13 @@ static int patch_sigmatel_stac9708_3d(struct snd_ac97 * ac97)
 }
 
 static const struct snd_kcontrol_new snd_ac97_sigmatel_4speaker =
-AC97_SINGLE("Sigmatel 4-Speaker Stereo Playback Switch", AC97_SIGMATEL_DAC2INVERT, 2, 1, 0);
+AC97_SINGLE("Sigmatel 4-Speaker Stereo Playback Switch",
+               AC97_SIGMATEL_DAC2INVERT, 2, 1, 0);
 
+/* "Sigmatel " removed due to excessive name length: */
 static const struct snd_kcontrol_new snd_ac97_sigmatel_phaseinvert =
-AC97_SINGLE("Sigmatel Surround Phase Inversion Playback Switch", AC97_SIGMATEL_DAC2INVERT, 3, 1, 0);
+AC97_SINGLE("Surround Phase Inversion Playback Switch",
+               AC97_SIGMATEL_DAC2INVERT, 3, 1, 0);
 
 static const struct snd_kcontrol_new snd_ac97_sigmatel_controls[] = {
 AC97_SINGLE("Sigmatel DAC 6dB Attenuate", AC97_SIGMATEL_ANALOG, 1, 1, 0),
index ad2888705d2a60d63661d8d1ba1412a109ce2bad..c111efe61c3cc224208828552e1148c5ad689bb7 100644 (file)
@@ -800,7 +800,7 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
                "Capture Volume",
                "External Amplifier",
                "Sigmatel 4-Speaker Stereo Playback Switch",
-               "Sigmatel Surround Phase Inversion Playback ",
+               "Surround Phase Inversion Playback Switch",
                NULL
        };
        static char *ca0106_rename_ctls[] = {
index b8a0d3e792724084b52ef5b765c3a3bdd539d054..bcbb736f94f0916e6dc57e9ec623f6f9efeffd80 100644 (file)
@@ -12058,6 +12058,7 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = {
        SND_PCI_QUIRK(0x1028, 0x0253, "Dell OEM", ALC268_DELL),
        SND_PCI_QUIRK(0x1028, 0x02b0, "Dell Inspiron Mini9", ALC268_DELL),
        SND_PCI_QUIRK(0x103c, 0x30cc, "TOSHIBA", ALC268_TOSHIBA),
+       SND_PCI_QUIRK(0x103c, 0x30f1, "HP TX25xx series", ALC268_TOSHIBA),
        SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST),
        SND_PCI_QUIRK(0x1179, 0xff10, "TOSHIBA A205", ALC268_TOSHIBA),
        SND_PCI_QUIRK(0x1179, 0xff50, "TOSHIBA A305", ALC268_TOSHIBA),