Fix readstat bug
This commit is contained in:
parent
6a104922f7
commit
989bfc25b5
|
@ -5,6 +5,9 @@
|
|||
*
|
||||
*
|
||||
* $Log$
|
||||
* Revision 2.20 1998/11/15 23:54:28 keil
|
||||
* changes from 2.0
|
||||
*
|
||||
* Revision 2.19 1998/08/13 23:36:18 keil
|
||||
* HiSax 3.1 - don't work stable with current LinkLevel
|
||||
*
|
||||
|
@ -394,9 +397,9 @@ HiSaxVersion(void))
|
|||
|
||||
printk(KERN_INFO "HiSax: Linux Driver for passive ISDN cards\n");
|
||||
#ifdef MODULE
|
||||
printk(KERN_INFO "HiSax: Version 3.1 (module)\n");
|
||||
printk(KERN_INFO "HiSax: Version 3.1a (module)\n");
|
||||
#else
|
||||
printk(KERN_INFO "HiSax: Version 3.1 (kernel)\n");
|
||||
printk(KERN_INFO "HiSax: Version 3.1a (kernel)\n");
|
||||
#endif
|
||||
strcpy(tmp, l1_revision);
|
||||
printk(KERN_INFO "HiSax: Layer1 Revision %s\n", HiSax_getrev(tmp));
|
||||
|
@ -566,15 +569,14 @@ static inline struct IsdnCardState
|
|||
int
|
||||
HiSax_readstatus(u_char * buf, int len, int user, int id, int channel)
|
||||
{
|
||||
int count;
|
||||
int count,cnt;
|
||||
u_char *p = buf;
|
||||
struct IsdnCardState *cs = hisax_findcard(id);
|
||||
|
||||
if (cs) {
|
||||
if (len > HISAX_STATUS_BUFSIZE) {
|
||||
printk(KERN_WARNING "HiSax: status overflow readstat %d/%d",
|
||||
printk(KERN_WARNING "HiSax: status overflow readstat %d/%d\n",
|
||||
len, HISAX_STATUS_BUFSIZE);
|
||||
return -ENODEV;
|
||||
}
|
||||
count = cs->status_end - cs->status_read +1;
|
||||
if (count >= len)
|
||||
|
@ -588,12 +590,18 @@ HiSax_readstatus(u_char * buf, int len, int user, int id, int channel)
|
|||
cs->status_read = cs->status_buf;
|
||||
p += count;
|
||||
count = len - count;
|
||||
if (count) {
|
||||
if (user)
|
||||
copy_to_user(p, cs->status_read, count);
|
||||
while (count) {
|
||||
if (count > HISAX_STATUS_BUFSIZE)
|
||||
cnt = HISAX_STATUS_BUFSIZE;
|
||||
else
|
||||
memcpy(p, cs->status_read, count);
|
||||
cs->status_read += count;
|
||||
cnt = count;
|
||||
if (user)
|
||||
copy_to_user(p, cs->status_read, cnt);
|
||||
else
|
||||
memcpy(p, cs->status_read, cnt);
|
||||
p += cnt;
|
||||
cs->status_read += cnt % HISAX_STATUS_BUFSIZE;
|
||||
count -= cnt;
|
||||
}
|
||||
return len;
|
||||
} else {
|
||||
|
|
|
@ -10,7 +10,7 @@ a273c532aec063574273ee519975cd9a isac.c
|
|||
8c89ac659d3188ab997fb575da22b566 isdnl2.c
|
||||
d0fa912aa284b8fd19fed86b65999f6f isdnl3.c
|
||||
1bce120740b615006286ad9b2d7fcdcb tei.c
|
||||
4e557bc1747aa4d26f6a4660fa72c910 callc.c
|
||||
8845f88dd17917d9b58badeff1605057 callc.c
|
||||
f3ec2a634f06074d16167aaba02b6dc1 cert.c
|
||||
71840ec8189f42b0db86fb38e5e5984c l3dss1.c
|
||||
1882de8bea921b9ccd98fbe77267aa04 l3_1tr6.c
|
||||
|
@ -21,9 +21,9 @@ f3ec2a634f06074d16167aaba02b6dc1 cert.c
|
|||
Version: 2.6.3i
|
||||
Charset: noconv
|
||||
|
||||
iQCVAwUBNk9uUTpxHvX/mS9tAQHNygP/a2PLhLCEDzOLgYO2amY9kHFFGUX1EmBZ
|
||||
q+Lm93YVRv3nrL5ABXplLgWiV6B7aY7JWHUMJKx3ntk4StHhYmlo7puOC/F2Yg3C
|
||||
kjmI24aGyFBq4muz8DjTyhs1g6SkxDBv95PJY/XC2mBZuIxukBkmtsMr7Yfdzooa
|
||||
FvySV8TZiPE=
|
||||
=KTgh
|
||||
iQCVAwUBNrl5JDpxHvX/mS9tAQHm8wP+Nk64UJ2abdDG/igXZSrwcYhX/Kp7cxt9
|
||||
ccYp+aaur+pALA0lxwY3xcLt9u36fCYuTLHAVmQoiC9Vbemj37yzM2rUpz9nkw/7
|
||||
D6gLqZs2jxVpAwVVJgp0JwDONKXaRX6Lt2EPD9PTW6vxRWEu0HqGhM5hrtd/o4rV
|
||||
mC1W7Wj13XM=
|
||||
=LdhT
|
||||
-----END PGP SIGNATURE-----
|
||||
|
|
Loading…
Reference in New Issue