lkml.org 
[lkml]   [2006]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH 8/13] isdn4linux: Siemens Gigaset drivers - elliminate from_user argument
From: Tilman Schmidt <tilman@imap.cc>, Hansjoerg Lipp <hjlipp@web.de>

This patch elliminates the from_user argument from a debugging
function, thus easing the job of sparse. Please merge.

Signed-off-by: Hansjoerg Lipp <hjlipp@web.de>
Signed-off-by: Tilman Schmidt <tilman@imap.cc>
---

drivers/isdn/gigaset/asyncdata.c | 2 +-
drivers/isdn/gigaset/bas-gigaset.c | 2 +-
drivers/isdn/gigaset/common.c | 30 +++++++-----------------------
drivers/isdn/gigaset/gigaset.h | 2 +-
drivers/isdn/gigaset/interface.c | 7 ++++---
drivers/isdn/gigaset/isocdata.c | 4 ++--
drivers/isdn/gigaset/usb-gigaset.c | 4 ++--
7 files changed, 18 insertions(+), 33 deletions(-)

--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/gigaset.h 2006-04-02 18:42:34.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/gigaset.h 2006-04-02 18:43:01.000000000 +0200
@@ -154,7 +154,7 @@ enum debuglevel { /* up to 24 bits (atom
#endif

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 */
#define ZSAU_NONE 0
--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/common.c 2006-04-02 18:42:34.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/common.c 2006-04-02 18:43:01.000000000 +0200
@@ -79,50 +79,34 @@ __u8 gigaset_invtab[256] = {
EXPORT_SYMBOL_GPL(gigaset_invtab);

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 inbuf[80 - 1];
unsigned char c;
- size_t numin;
- const unsigned char *in;
size_t space = sizeof outbuf - 1;
unsigned char *out = outbuf;
+ size_t numin = len;

- if (!from_user) {
- 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) {
+ while (numin--) {
c = *buf++;
if (c == '~' || c == '^' || c == '\\') {
- if (space-- <= 0)
+ if (!space--)
break;
*out++ = '\\';
}
if (c & 0x80) {
- if (space-- <= 0)
+ if (!space--)
break;
*out++ = '~';
c ^= 0x80;
}
if (c < 0x20 || c == 0x7f) {
- if (space-- <= 0)
+ if (!space--)
break;
*out++ = '^';
c ^= 0x40;
}
- if (space-- <= 0)
+ if (!space--)
break;
*out++ = c;
}
--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/interface.c 2006-04-02 18:40:48.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/interface.c 2006-04-02 18:43:01.000000000 +0200
@@ -246,8 +246,6 @@ static int if_ioctl(struct tty_struct *t
break;
case GIGASET_BRKCHARS:
//FIXME test if MS_LOCKED
- gigaset_dbg_buffer(DEBUG_IF, "GIGASET_BRKCHARS",
- 6, (const unsigned char *) arg, 1);
if (!atomic_read(&cs->connected)) {
gig_dbg(DEBUG_ANY,
"can't communicate with unplugged device");
@@ -257,8 +255,11 @@ static int if_ioctl(struct tty_struct *t
retval = copy_from_user(&buf,
(const unsigned char __user *) arg, 6)
? -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);
+ }
break;
case GIGASET_VERSION:
retval = copy_from_user(version,
--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/bas-gigaset.c 2006-04-02 18:42:01.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/bas-gigaset.c 2006-04-02 18:43:01.000000000 +0200
@@ -1756,7 +1756,7 @@ static int gigaset_write_cmd(struct card

gigaset_dbg_buffer(atomic_read(&cs->mstate) != MS_LOCKED ?
DEBUG_TRANSCMD : DEBUG_LOCKCMD,
- "CMD Transmit", len, buf, 0);
+ "CMD Transmit", len, buf);

if (unlikely(!atomic_read(&cs->connected))) {
err("%s: disconnected", __func__);
--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/isocdata.c 2006-04-02 18:42:01.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/isocdata.c 2006-04-02 18:43:01.000000000 +0200
@@ -957,11 +957,11 @@ void gigaset_isoc_input(struct inbuf_t *

if (atomic_read(&cs->mstate) == MS_LOCKED) {
gigaset_dbg_buffer(DEBUG_LOCKCMD, "received response",
- numbytes, src, 0);
+ numbytes, src);
gigaset_if_receive(inbuf->cs, src, numbytes);
} else {
gigaset_dbg_buffer(DEBUG_CMD, "received response",
- numbytes, src, 0);
+ numbytes, src);
cmd_loop(src, numbytes, inbuf);
}

--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/usb-gigaset.c 2006-04-02 18:42:01.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/usb-gigaset.c 2006-04-02 18:43:04.000000000 +0200
@@ -500,7 +500,7 @@ static int gigaset_write_cmd(struct card

gigaset_dbg_buffer(atomic_read(&cs->mstate) != MS_LOCKED ?
DEBUG_TRANSCMD : DEBUG_LOCKCMD,
- "CMD Transmit", len, buf, 0);
+ "CMD Transmit", len, buf);

if (!atomic_read(&cs->connected)) {
err("%s: not connected", __func__);
@@ -559,7 +559,7 @@ static int gigaset_brkchars(struct cards
#ifdef CONFIG_GIGASET_UNDOCREQ
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);
return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
0, 0, &buf, 6, 2000);
--- linux-2.6.16-gig-uninline/drivers/isdn/gigaset/asyncdata.c 2006-04-02 18:42:01.000000000 +0200
+++ linux-2.6.16-gig-from_user/drivers/isdn/gigaset/asyncdata.c 2006-04-02 18:43:01.000000000 +0200
@@ -98,7 +98,7 @@ static inline int lock_loop(unsigned cha
struct cardstate *cs = inbuf->cs;

gigaset_dbg_buffer(DEBUG_LOCKCMD, "received response",
- numbytes, src, 0);
+ numbytes, src);
gigaset_if_receive(cs, src, numbytes);

return numbytes;
-
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/
\
 
 \ /
  Last update: 2006-04-04 02:04    [W:0.037 / U:0.852 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site