Messages in this thread Patch in this message |  | | Date | Sat, 31 Jul 2004 22:47:40 +0200 (CEST) | | From | Jesper Juhl <> | | Subject | [PATCH] Fix up return value from dio_find() (fixing a FIXME) |
| |
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@dif.dk>
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@dif.dk>
- 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/
|  |