[PATCH] Fix up return value from dio_find() (fixing a FIXME)

From: Jesper Juhl
Date: Sat Jul 31 2004 - 15:44:29 EST



Here's a patch to fix up this FIXME in drivers/dio/dio.c:dio_find() :

* Aargh: we use 0 for an error return code, but select code 0 exists!
* FIXME (trivial, use -1, but requires changes to all the drivers :-< )
*/

I've changed the return value to -1 as suggested by the comment, and then went looking for the drivers that needed to be changed (as the comment mentions). I only found two users of dio_find() and I've fixed those up to not treat 0 as an error, but only values <0.
The FIXME implies (to me at least) that there are many drivers that would need to be changed, but I could only find two - did I miss anything?
Also, I don't have the hardware to test the drivers I've changed, so I've done compile testing only - could someone please review my changes and confirm if they are correct?

Patch is against 2.6.8-rc2-mm1

Signed-off-by: Jesper Juhl <juhl-lkml@xxxxxx>


diff -urp linux-2.6.8-rc2-mm1-orig/drivers/dio/dio.c linux-2.6.8-rc2-mm1/drivers/dio/dio.c
--- linux-2.6.8-rc2-mm1-orig/drivers/dio/dio.c 2004-06-16 07:19:43.000000000 +0200
+++ linux-2.6.8-rc2-mm1/drivers/dio/dio.c 2004-07-31 19:12:26.000000000 +0200
@@ -148,9 +148,6 @@ static int __init dio_find_slow(int devi
return 0;
}

-/* Aargh: we use 0 for an error return code, but select code 0 exists!
- * FIXME (trivial, use -1, but requires changes to all the drivers :-< )
- */
int dio_find(int deviceid)
{
if (blist) @@ -160,7 +157,7 @@ int dio_find(int deviceid)
for (b = blist; b; b = b->next)
if (b->id == deviceid && b->configured == 0)
return b->scode;
- return 0;
+ return -1;
}
return dio_find_slow(deviceid);
}
diff -urp linux-2.6.8-rc2-mm1-orig/drivers/net/hplance.c linux-2.6.8-rc2-mm1/drivers/net/hplance.c
--- linux-2.6.8-rc2-mm1-orig/drivers/net/hplance.c 2004-06-16 07:19:22.000000000 +0200
+++ linux-2.6.8-rc2-mm1/drivers/net/hplance.c 2004-07-31 19:10:12.000000000 +0200
@@ -91,7 +91,7 @@ struct net_device * __init hplance_probe
{
int scode = dio_find(DIO_ID_LAN);

- if (!scode)
+ if (scode < 0)
break;

dio_config_board(scode);
diff -urp linux-2.6.8-rc2-mm1-orig/drivers/video/hpfb.c linux-2.6.8-rc2-mm1/drivers/video/hpfb.c
--- linux-2.6.8-rc2-mm1-orig/drivers/video/hpfb.c 2004-06-16 07:19:26.000000000 +0200
+++ linux-2.6.8-rc2-mm1/drivers/video/hpfb.c 2004-07-31 13:59:47.000000000 +0200
@@ -197,7 +197,7 @@ int __init hpfb_init(void)
} else {
int sc = dio_find(DIO_ID_FBUFFER);

- if (sc) {
+ if (sc >= 0) {
unsigned long addr = (unsigned long)dio_scodetoviraddr(sc);
unsigned int sid = DIO_SECID(addr);




--
Jesper Juhl <juhl-lkml@xxxxxx>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/