Linux kernel 2.3.34+ patch: serious bug in cs.c breaks pcnet_cs, etc.

From: Matt Yourst (yourst@mit.edu)
Date: Sun Feb 13 2000 - 21:36:34 EST


Hi,

I've been trying out recent 2.3.x kernel builds and have found a serious but
subtle bug in the PCMCIA code. Between 2.3.33 and 2.3.34, a couple of changes
were made to the CardServices() function in drivers/pcmcia/cs.c to interface
differently with other functions (in particular, pcmcia_request_window, etc.)
However, it appears that a syntax typo didn't preserve the original interface,
so drivers like pcnet_cs (in my case, possibly others) started to malfunction in
very strange ways (i.e., pcnet_cs read from a bad packet window in random cases
since it didn't get the window handle from CardServices that it should have.)
Here's a patch that fixes this problem (which has remained since 2.3.34):

>From the old cs.c to the fixed cs.c (patch was on 2.3.43):

2191c2191
< (memory_handle_t *)a1 = m;

---
>         *((memory_handle_t *)a1) = m;
2205c2205
<         (eraseq_handle_t *)a1 = w;
---
>         *((eraseq_handle_t *)a1) = w;
2230c2230
<         (window_handle_t *)a1 = w;
---
>         *((window_handle_t *)a1) = w;

This problem appeared in a number of places in CardServices(), so other less-tested drivers may also malfunction under certain circumstances. If this does indeed fix the problem as it appears to, I'm glad I could contribute it (and good luck merging it into the kernel source.)

- Matt Yourst

------------------------------------------------------------- Matt T. Yourst Massachusetts Institute of Technology yourst@mit.edu 617.225.7690 513 French House - 476 Memorial Drive - Cambridge, MA 02136 -------------------------------------------------------------

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



This archive was generated by hypermail 2b29 : Tue Feb 15 2000 - 21:00:26 EST