From e781de44153885d5f772731726b4c0c16f8af021 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 5 Dec 2005 10:00:50 +0000 Subject: [MMC] Proper check of SCR error code The routine reading the SCR wasn't paying proper attention to the error codes returned from the driver. Signed-off-by: Pierre Ossman Signed-off-by: Russell King --- drivers/mmc/mmc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index d336a1d65dc7..b586a83a9b4c 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -932,8 +932,9 @@ static void mmc_read_scrs(struct mmc_host *host) sg_init_one(&sg, (u8*)card->raw_scr, 8); - err = mmc_wait_for_req(host, &mrq); - if (err != MMC_ERR_NONE) { + mmc_wait_for_req(host, &mrq); + + if (cmd.error != MMC_ERR_NONE || data.error != MMC_ERR_NONE) { mmc_card_set_dead(card); continue; } -- cgit v1.2.2 From 9ddf61bd09a7668279d2b208a96eba784bec3d80 Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Mon, 5 Dec 2005 10:15:06 +0000 Subject: [ARM SMP] mpcore_wdt bogus fpos check drivers/char/watchdog/mpcore_wdt.c write function contains a check for (ppos != &file->f_pos). Such check used to make sense when a pointer to file->f_pos was handed by vfs_write(), not a copy of it as it stands now. Signed-off-by: Marcelo Tosatti Signed-off-by: Russell King --- drivers/char/watchdog/mpcore_wdt.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'drivers') diff --git a/drivers/char/watchdog/mpcore_wdt.c b/drivers/char/watchdog/mpcore_wdt.c index 9defcf861b67..b4d843489881 100644 --- a/drivers/char/watchdog/mpcore_wdt.c +++ b/drivers/char/watchdog/mpcore_wdt.c @@ -180,10 +180,6 @@ static ssize_t mpcore_wdt_write(struct file *file, const char *data, size_t len, { struct mpcore_wdt *wdt = file->private_data; - /* Can't seek (pwrite) on this device */ - if (ppos != &file->f_pos) - return -ESPIPE; - /* * Refresh the timer. */ -- cgit v1.2.2 From 92f268e034faf793f6d40de2f0fc81478a14ff39 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 5 Dec 2005 11:00:40 -0800 Subject: [PATCH] sk98lin: rx checksum offset not set The checksum offsets for receive offload were not being set correctly. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik --- drivers/net/sk98lin/skge.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c index 00c5d7f04c68..ae7343934758 100644 --- a/drivers/net/sk98lin/skge.c +++ b/drivers/net/sk98lin/skge.c @@ -818,7 +818,7 @@ uintptr_t VNextDescr; /* the virtual bus address of the next descriptor */ /* set the pointers right */ pDescr->VNextRxd = VNextDescr & 0xffffffffULL; pDescr->pNextRxd = pNextDescr; - pDescr->TcpSumStarts = 0; + if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN; /* advance one step */ pPrevDescr = pDescr; @@ -2169,7 +2169,7 @@ rx_start: } /* frame > SK_COPY_TRESHOLD */ #ifdef USE_SK_RX_CHECKSUM - pMsg->csum = pRxd->TcpSums; + pMsg->csum = pRxd->TcpSums & 0xffff; pMsg->ip_summed = CHECKSUM_HW; #else pMsg->ip_summed = CHECKSUM_NONE; -- cgit v1.2.2 From c2cd6d3c122798c39f63e21e4dd04ee5790010b6 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 7 Dec 2005 18:11:26 +0000 Subject: [SERIAL] 8250_pci: Remove redundant assignment, and mark fallthrough. Signed-off-by: Dave Jones --- drivers/serial/8250_pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index 8d92adfbb8bd..8adca0ce267f 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c @@ -516,7 +516,7 @@ pci_timedia_setup(struct serial_private *priv, struct pciserial_board *board, break; case 3: offset = board->uart_offset; - bar = 1; + /* FALLTHROUGH */ case 4: /* BAR 2 */ case 5: /* BAR 3 */ case 6: /* BAR 4 */ -- cgit v1.2.2 From 016cc85072944bfa03c5e4b587ae89588ce2e5df Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Fri, 9 Dec 2005 19:12:10 +0100 Subject: [PATCH] pcnet32: use MAC address from prom also on powerpc The CSR contains garbage after a coldboot on RS/6000. One some systems (like my 44p 270) the MAC address is all FF, on others (like my B50) it is ff:ff:ff:fd:ff:6b. It can eventually be fixed by loading pcnet32, set the interface into the UP state, rmmod pcnet32 and load it again. But this worked only on the 270. Only netbooting after a cold start provides the correct MAC address via prom and CSR. This makes it very unreliable. I dont know why the MAC is stored in two different places. Remove the special case for powerpc, which was added in early 2.4 development. Signed-off-by: Olaf Hering drivers/net/pcnet32.c | 5 ----- 1 files changed, 5 deletions(-) Signed-off-by: Jeff Garzik --- drivers/net/pcnet32.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'drivers') diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index be319229f543..8f6cf8c896a4 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c @@ -1251,12 +1251,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) if (memcmp(promaddr, dev->dev_addr, 6) || !is_valid_ether_addr(dev->dev_addr)) { -#ifndef __powerpc__ if (is_valid_ether_addr(promaddr)) { -#else - if (!is_valid_ether_addr(dev->dev_addr) - && is_valid_ether_addr(promaddr)) { -#endif if (pcnet32_debug & NETIF_MSG_PROBE) { printk(" warning: CSR address invalid,\n"); printk(KERN_INFO " using instead PROM address of"); -- cgit v1.2.2 From 66e05225262cd9271fac13fe2fd1e9edb65e3978 Mon Sep 17 00:00:00 2001 From: Brian King Date: Mon, 12 Dec 2005 13:05:08 -0600 Subject: [PATCH] Fix SCSI scanning slab corruption There is a double free in the scsi scan code if a LLDD's slave_alloc() call fails. There is a direct call to scsi_free_queue and then the following put_device calls the release function, which also frees the queue. Remove the redundant scsi_free_queue. Signed-off-by: Brian King Tested-by: Nathan Lynch [ Also removed some strange whitespace artifacts in that area ] Signed-off-by: Linus Torvalds --- drivers/scsi/scsi_scan.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'drivers') diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 374853df9cca..94e5167f260d 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -266,8 +266,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, /* * if LLDD reports slave not present, don't clutter * console with alloc failure messages - - */ if (ret == -ENXIO) display_failure_msg = 0; @@ -279,7 +277,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, out_device_destroy: transport_destroy_device(&sdev->sdev_gendev); - scsi_free_queue(sdev->request_queue); put_device(&sdev->sdev_gendev); out: if (display_failure_msg) -- cgit v1.2.2 From 806f7bf605bdb0f2ea2253f832943890edb85d83 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 12 Dec 2005 14:41:20 -0800 Subject: [SBUSFB]: Kill 'list' member from foo_par structs, totally unused. Based upon a patch from Hareesh Nagarajan. Signed-off-by: David S. Miller --- drivers/video/bw2.c | 1 - drivers/video/cg14.c | 1 - drivers/video/cg3.c | 1 - drivers/video/cg6.c | 3 +-- drivers/video/ffb.c | 1 - drivers/video/leo.c | 1 - drivers/video/p9100.c | 1 - drivers/video/tcx.c | 1 - 8 files changed, 1 insertion(+), 9 deletions(-) (limited to 'drivers') diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c index d3728f60961e..9248fe1fbb1a 100644 --- a/drivers/video/bw2.c +++ b/drivers/video/bw2.c @@ -121,7 +121,6 @@ struct bw2_par { unsigned long fbsize; struct sbus_dev *sdev; - struct list_head list; }; /** diff --git a/drivers/video/cg14.c b/drivers/video/cg14.c index 1bed50f2a276..a56147102abb 100644 --- a/drivers/video/cg14.c +++ b/drivers/video/cg14.c @@ -206,7 +206,6 @@ struct cg14_par { int mode; int ramsize; struct sbus_dev *sdev; - struct list_head list; }; static void __cg14_reset(struct cg14_par *par) diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c index a1354e7e0513..9fcd89608ed7 100644 --- a/drivers/video/cg3.c +++ b/drivers/video/cg3.c @@ -124,7 +124,6 @@ struct cg3_par { unsigned long fbsize; struct sbus_dev *sdev; - struct list_head list; }; /** diff --git a/drivers/video/cg6.c b/drivers/video/cg6.c index 9debe642fd2f..050835e39aa3 100644 --- a/drivers/video/cg6.c +++ b/drivers/video/cg6.c @@ -265,7 +265,6 @@ struct cg6_par { unsigned long fbsize; struct sbus_dev *sdev; - struct list_head list; }; static int cg6_sync(struct fb_info *info) @@ -612,7 +611,7 @@ static void cg6_chip_init(struct fb_info *info) struct cg6_par *par = (struct cg6_par *) info->par; struct cg6_tec __iomem *tec = par->tec; struct cg6_fbc __iomem *fbc = par->fbc; - u32 rev, conf, mode, tmp; + u32 rev, conf, mode; int i; /* Turn off stuff in the Transform Engine. */ diff --git a/drivers/video/ffb.c b/drivers/video/ffb.c index 2584daec7bbf..c4870d559afc 100644 --- a/drivers/video/ffb.c +++ b/drivers/video/ffb.c @@ -359,7 +359,6 @@ struct ffb_par { int prom_parent_node; int dac_rev; int board_type; - struct list_head list; }; static void FFBFifo(struct ffb_par *par, int n) diff --git a/drivers/video/leo.c b/drivers/video/leo.c index 376d4a171ec7..494287f8f8bf 100644 --- a/drivers/video/leo.c +++ b/drivers/video/leo.c @@ -197,7 +197,6 @@ struct leo_par { unsigned long fbsize; struct sbus_dev *sdev; - struct list_head list; }; static void leo_wait(struct leo_lx_krn __iomem *lx_krn) diff --git a/drivers/video/p9100.c b/drivers/video/p9100.c index 18bcda23d2cf..b251e754e16c 100644 --- a/drivers/video/p9100.c +++ b/drivers/video/p9100.c @@ -140,7 +140,6 @@ struct p9100_par { unsigned long fbsize; struct sbus_dev *sdev; - struct list_head list; }; /** diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c index fe4f63f3849d..5cd78054fa7d 100644 --- a/drivers/video/tcx.c +++ b/drivers/video/tcx.c @@ -125,7 +125,6 @@ struct tcx_par { int lowdepth; struct sbus_dev *sdev; - struct list_head list; }; /* Reset control plane so that WID is 8-bit plane. */ -- cgit v1.2.2 From 2c27d4e53043de1c821e0af09e08dee3e92a01d6 Mon Sep 17 00:00:00 2001 From: Hareesh Nagarajan Date: Mon, 12 Dec 2005 14:42:07 -0800 Subject: [SBUSFB] tcx: Use FB_BLANK_UNBLANK instead of magic constant. From: Hareesh Nagarajan Signed-off-by: David S. Miller --- drivers/video/tcx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c index 5cd78054fa7d..2b27b4474001 100644 --- a/drivers/video/tcx.c +++ b/drivers/video/tcx.c @@ -443,7 +443,7 @@ static void tcx_init_one(struct sbus_dev *sdev) tcx_reset(&all->info); - tcx_blank(0, &all->info); + tcx_blank(FB_BLANK_UNBLANK, &all->info); if (fb_alloc_cmap(&all->info.cmap, 256, 0)) { printk(KERN_ERR "tcx: Could not allocate color map.\n"); -- cgit v1.2.2 From ee1c81917a0c10f44c1b400482b8372e68238ff8 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 6 Dec 2005 15:01:49 -0800 Subject: [PATCH] skge: get rid of warning on race Get rid of warning in case of race with ring full and lockless tx on the skge driver. It is possible to be in the transmit routine with no available slots and already stopped. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik --- drivers/net/skge.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers') diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 716467879b9c..8b6e2a11e28d 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c @@ -2280,11 +2280,13 @@ static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev) } if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) { - netif_stop_queue(dev); - spin_unlock_irqrestore(&skge->tx_lock, flags); + if (!netif_stopped(dev)) { + netif_stop_queue(dev); - printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", - dev->name); + printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", + dev->name); + } + spin_unlock_irqrestore(&skge->tx_lock, flags); return NETDEV_TX_BUSY; } -- cgit v1.2.2