lkml.org 
[lkml]   [2002]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[Linux-kernel] Re: Linux 2.4.18-pre9
> Jeff Garzik wrote:
> Simon Turvey wrote:
> > > Can you tell me if the final 2.4.18 will solve the problems with recent
> > binutils? Or is the onus on the binutils maintainer to fix this?
>
> What driver are you having problems with?

how about bttv and usb-uhci, both of which I've sent patches for multiple times.

>
> Typically this problem is solved by a one-line fix to a specific driver,
> in 2.4.x.
>
> Jeff


diff -Naur linux-2.4.18-pre7-ac1.orig/drivers/media/video/bttv-driver.c linux-2.4.18-pre7-ac1/drivers/media/video/bttv-driver.c
--- linux-2.4.18-pre7-ac1.orig/drivers/media/video/bttv-driver.c Sat Dec 22 13:39:39 2001
+++ linux-2.4.18-pre7-ac1/drivers/media/video/bttv-driver.c Wed Jan 30 15:23:48 2002
@@ -2820,11 +2820,10 @@
* Scan for a Bt848 card, request the irq and map the io memory
*/

-static void __devexit bttv_remove(struct pci_dev *pci_dev)
+static void bttv_remove_card(struct bttv *btv)
{
u8 command;
int j;
- struct bttv *btv = pci_get_drvdata(pci_dev);

if (bttv_verbose)
printk("bttv%d: unloading\n",btv->nr);
@@ -2890,10 +2889,18 @@
btv->shutdown=1;
wake_up(&btv->gpioq);

- pci_set_drvdata(pci_dev, NULL);
return;
}

+static void __devexit bttv_remove(struct pci_dev *pci_dev)
+{
+ struct bttv *btv = pci_get_drvdata(pci_dev);
+
+ if (btv) {
+ bttv_remove_card(btv);
+ pci_set_drvdata(pci_dev, NULL);
+ }
+}

static int __devinit bttv_probe(struct pci_dev *dev, const struct pci_device_id *pci_id)
{
@@ -2992,7 +2999,7 @@
pci_set_drvdata(dev,btv);

if(init_bt848(btv) < 0) {
- bttv_remove(dev);
+ bttv_remove_card(btv);
return -EIO;
}
bttv_num++;
diff -Naur linux-2.4.18-pre7-ac1.orig/drivers/usb/usb-uhci.c linux-2.4.18-pre7-ac1/drivers/usb/usb-uhci.c
--- linux-2.4.18-pre7-ac1.orig/drivers/usb/usb-uhci.c Sat Dec 22 13:39:39 2001
+++ linux-2.4.18-pre7-ac1/drivers/usb/usb-uhci.c Wed Jan 30 15:23:48 2002
@@ -2845,10 +2845,9 @@
s->running = 1;
}

-_static void __devexit
-uhci_pci_remove (struct pci_dev *dev)
+_static void
+uhci_pci_remove_card (uhci_t *s)
{
- uhci_t *s = pci_get_drvdata(dev);
struct usb_device *root_hub = s->bus->root_hub;

s->running = 0; // Don't allow submit_urb
@@ -2868,7 +2867,17 @@
free_irq (s->irq, s);
usb_free_bus (s->bus);
cleanup_skel (s);
- kfree (s);
+}
+
+_static void __devexit
+uhci_pci_remove (struct pci_dev *dev)
+{
+ uhci_t *s = pci_get_drvdata(dev);
+
+ if (s) {
+ uhci_pci_remove_card(s);
+ kfree (s);
+ }
}

_static int __init uhci_start_usb (uhci_t *s)
@@ -3001,7 +3010,8 @@
s->irq = irq;

if(uhci_start_usb (s) < 0) {
- uhci_pci_remove(dev);
+ uhci_pci_remove_card(s);
+ kfree(s);
return -1;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:24    [W:0.426 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site