[PATCH] isdn4linux: Siemens Gigaset drivers: eliminate from_user argument
With Hansjoerg Lipp <hjlipp@web.de> Eliminate the from_user argument from a debugging function, thus easing the job of sparse. Signed-off-by: Hansjoerg Lipp <hjlipp@web.de> Signed-off-by: Tilman Schmidt <tilman@imap.cc> Cc: Karsten Keil <kkeil@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
714e8236e5
commit
01371500b2
@@ -98,7 +98,7 @@ static inline int lock_loop(unsigned char *src, int numbytes,
|
|||||||
struct cardstate *cs = inbuf->cs;
|
struct cardstate *cs = inbuf->cs;
|
||||||
|
|
||||||
gigaset_dbg_buffer(DEBUG_LOCKCMD, "received response",
|
gigaset_dbg_buffer(DEBUG_LOCKCMD, "received response",
|
||||||
numbytes, src, 0);
|
numbytes, src);
|
||||||
gigaset_if_receive(cs, src, numbytes);
|
gigaset_if_receive(cs, src, numbytes);
|
||||||
|
|
||||||
return numbytes;
|
return numbytes;
|
||||||
|
@@ -1756,7 +1756,7 @@ static int gigaset_write_cmd(struct cardstate *cs,
|
|||||||
|
|
||||||
gigaset_dbg_buffer(atomic_read(&cs->mstate) != MS_LOCKED ?
|
gigaset_dbg_buffer(atomic_read(&cs->mstate) != MS_LOCKED ?
|
||||||
DEBUG_TRANSCMD : DEBUG_LOCKCMD,
|
DEBUG_TRANSCMD : DEBUG_LOCKCMD,
|
||||||
"CMD Transmit", len, buf, 0);
|
"CMD Transmit", len, buf);
|
||||||
|
|
||||||
if (unlikely(!atomic_read(&cs->connected))) {
|
if (unlikely(!atomic_read(&cs->connected))) {
|
||||||
err("%s: disconnected", __func__);
|
err("%s: disconnected", __func__);
|
||||||
|
@@ -79,50 +79,34 @@ __u8 gigaset_invtab[256] = {
|
|||||||
EXPORT_SYMBOL_GPL(gigaset_invtab);
|
EXPORT_SYMBOL_GPL(gigaset_invtab);
|
||||||
|
|
||||||
void gigaset_dbg_buffer(enum debuglevel level, const unsigned char *msg,
|
void gigaset_dbg_buffer(enum debuglevel level, const unsigned char *msg,
|
||||||
size_t len, const unsigned char *buf, int from_user)
|
size_t len, const unsigned char *buf)
|
||||||
{
|
{
|
||||||
unsigned char outbuf[80];
|
unsigned char outbuf[80];
|
||||||
unsigned char inbuf[80 - 1];
|
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
size_t numin;
|
|
||||||
const unsigned char *in;
|
|
||||||
size_t space = sizeof outbuf - 1;
|
size_t space = sizeof outbuf - 1;
|
||||||
unsigned char *out = outbuf;
|
unsigned char *out = outbuf;
|
||||||
|
size_t numin = len;
|
||||||
|
|
||||||
if (!from_user) {
|
while (numin--) {
|
||||||
in = buf;
|
|
||||||
numin = len;
|
|
||||||
} else {
|
|
||||||
numin = len < sizeof inbuf ? len : sizeof inbuf;
|
|
||||||
in = inbuf;
|
|
||||||
if (copy_from_user(inbuf, (const unsigned char __user *) buf,
|
|
||||||
numin)) {
|
|
||||||
gig_dbg(level, "%s (%u bytes) - copy_from_user failed",
|
|
||||||
msg, (unsigned) len);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
while (numin-- > 0) {
|
|
||||||
c = *buf++;
|
c = *buf++;
|
||||||
if (c == '~' || c == '^' || c == '\\') {
|
if (c == '~' || c == '^' || c == '\\') {
|
||||||
if (space-- <= 0)
|
if (!space--)
|
||||||
break;
|
break;
|
||||||
*out++ = '\\';
|
*out++ = '\\';
|
||||||
}
|
}
|
||||||
if (c & 0x80) {
|
if (c & 0x80) {
|
||||||
if (space-- <= 0)
|
if (!space--)
|
||||||
break;
|
break;
|
||||||
*out++ = '~';
|
*out++ = '~';
|
||||||
c ^= 0x80;
|
c ^= 0x80;
|
||||||
}
|
}
|
||||||
if (c < 0x20 || c == 0x7f) {
|
if (c < 0x20 || c == 0x7f) {
|
||||||
if (space-- <= 0)
|
if (!space--)
|
||||||
break;
|
break;
|
||||||
*out++ = '^';
|
*out++ = '^';
|
||||||
c ^= 0x40;
|
c ^= 0x40;
|
||||||
}
|
}
|
||||||
if (space-- <= 0)
|
if (!space--)
|
||||||
break;
|
break;
|
||||||
*out++ = c;
|
*out++ = c;
|
||||||
}
|
}
|
||||||
|
@@ -154,7 +154,7 @@ enum debuglevel { /* up to 24 bits (atomic_t) */
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void gigaset_dbg_buffer(enum debuglevel level, const unsigned char *msg,
|
void gigaset_dbg_buffer(enum debuglevel level, const unsigned char *msg,
|
||||||
size_t len, const unsigned char *buf, int from_user);
|
size_t len, const unsigned char *buf);
|
||||||
|
|
||||||
/* connection state */
|
/* connection state */
|
||||||
#define ZSAU_NONE 0
|
#define ZSAU_NONE 0
|
||||||
|
@@ -246,8 +246,6 @@ static int if_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
break;
|
break;
|
||||||
case GIGASET_BRKCHARS:
|
case GIGASET_BRKCHARS:
|
||||||
//FIXME test if MS_LOCKED
|
//FIXME test if MS_LOCKED
|
||||||
gigaset_dbg_buffer(DEBUG_IF, "GIGASET_BRKCHARS",
|
|
||||||
6, (const unsigned char *) arg, 1);
|
|
||||||
if (!atomic_read(&cs->connected)) {
|
if (!atomic_read(&cs->connected)) {
|
||||||
gig_dbg(DEBUG_ANY,
|
gig_dbg(DEBUG_ANY,
|
||||||
"can't communicate with unplugged device");
|
"can't communicate with unplugged device");
|
||||||
@@ -257,8 +255,11 @@ static int if_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
retval = copy_from_user(&buf,
|
retval = copy_from_user(&buf,
|
||||||
(const unsigned char __user *) arg, 6)
|
(const unsigned char __user *) arg, 6)
|
||||||
? -EFAULT : 0;
|
? -EFAULT : 0;
|
||||||
if (retval >= 0)
|
if (retval >= 0) {
|
||||||
|
gigaset_dbg_buffer(DEBUG_IF, "GIGASET_BRKCHARS",
|
||||||
|
6, (const unsigned char *) arg);
|
||||||
retval = cs->ops->brkchars(cs, buf);
|
retval = cs->ops->brkchars(cs, buf);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GIGASET_VERSION:
|
case GIGASET_VERSION:
|
||||||
retval = copy_from_user(version,
|
retval = copy_from_user(version,
|
||||||
|
@@ -957,11 +957,11 @@ void gigaset_isoc_input(struct inbuf_t *inbuf)
|
|||||||
|
|
||||||
if (atomic_read(&cs->mstate) == MS_LOCKED) {
|
if (atomic_read(&cs->mstate) == MS_LOCKED) {
|
||||||
gigaset_dbg_buffer(DEBUG_LOCKCMD, "received response",
|
gigaset_dbg_buffer(DEBUG_LOCKCMD, "received response",
|
||||||
numbytes, src, 0);
|
numbytes, src);
|
||||||
gigaset_if_receive(inbuf->cs, src, numbytes);
|
gigaset_if_receive(inbuf->cs, src, numbytes);
|
||||||
} else {
|
} else {
|
||||||
gigaset_dbg_buffer(DEBUG_CMD, "received response",
|
gigaset_dbg_buffer(DEBUG_CMD, "received response",
|
||||||
numbytes, src, 0);
|
numbytes, src);
|
||||||
cmd_loop(src, numbytes, inbuf);
|
cmd_loop(src, numbytes, inbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -500,7 +500,7 @@ static int gigaset_write_cmd(struct cardstate *cs, const unsigned char *buf,
|
|||||||
|
|
||||||
gigaset_dbg_buffer(atomic_read(&cs->mstate) != MS_LOCKED ?
|
gigaset_dbg_buffer(atomic_read(&cs->mstate) != MS_LOCKED ?
|
||||||
DEBUG_TRANSCMD : DEBUG_LOCKCMD,
|
DEBUG_TRANSCMD : DEBUG_LOCKCMD,
|
||||||
"CMD Transmit", len, buf, 0);
|
"CMD Transmit", len, buf);
|
||||||
|
|
||||||
if (!atomic_read(&cs->connected)) {
|
if (!atomic_read(&cs->connected)) {
|
||||||
err("%s: not connected", __func__);
|
err("%s: not connected", __func__);
|
||||||
@@ -559,7 +559,7 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
|
|||||||
#ifdef CONFIG_GIGASET_UNDOCREQ
|
#ifdef CONFIG_GIGASET_UNDOCREQ
|
||||||
struct usb_device *udev = cs->hw.usb->udev;
|
struct usb_device *udev = cs->hw.usb->udev;
|
||||||
|
|
||||||
gigaset_dbg_buffer(DEBUG_USBREQ, "brkchars", 6, buf, 0);
|
gigaset_dbg_buffer(DEBUG_USBREQ, "brkchars", 6, buf);
|
||||||
memcpy(cs->hw.usb->bchars, buf, 6);
|
memcpy(cs->hw.usb->bchars, buf, 6);
|
||||||
return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
|
return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
|
||||||
0, 0, &buf, 6, 2000);
|
0, 0, &buf, 6, 2000);
|
||||||
|
Reference in New Issue
Block a user