Fix readstat bug

This commit is contained in:
Karsten Keil 1999-02-04 10:48:54 +00:00
parent 6a104922f7
commit 989bfc25b5
2 changed files with 24 additions and 16 deletions

View File

@ -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 {

View File

@ -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-----