<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>[PATCH 6/8] isdn/gigaset: unify function return values</title>
        <description> Various functions in the Gigaset driver were using different
conventions for the meaning of their int return values.
Align them to the usual negative error numbers convention.

Inspired-by: Julia Lawall &amp;lt;julia.lawall@lip6.fr&amp;gt;
Signed-off-by: Tilman Schmidt &amp;lt;tilman@imap.cc&amp;gt;
---
 drivers/isdn/gigaset/bas-gigaset.c |   33 ++++++++++++++++-----------
 drivers/isdn/gigaset/capi.c        |    8 +++---
 drivers/isdn/gigaset/common.c      |   43 ++++++++++++++++-------------------
 drivers/isdn/gigaset/dummyll.c     |    2 +-
 drivers/isdn/gigaset/ev-layer.c    |   16 ++++++------
 drivers/isdn/gigaset/gigaset.h     |    2 +-
 drivers/isdn/gigaset/i4l.c         |   12 +++++-----
 drivers/isdn/gigaset/isocdata.c    |   12 +++++-----
 drivers/isdn/gigaset/ser-gigaset.c |   21 ++++++++++-------
 drivers/isdn/gigaset/usb-gigaset.c |   19 ++++++++-------
 10 files changed, 87 insertions(+), 81 deletions(-)

diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
index d651523..3b9278b 100644
--- a/drivers/isdn/gigaset/bas-gigaset.c
+++ b/drivers/isdn/gigaset/bas-gigaset.c
@@ -2077,16 +2077,14 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
 /* Free hardware dependent part of the B channel structure
  * parameter:
  *	bcs	B channel structure
- * return value:
- *	!=0 on success
  */
-static int gigaset_freebcshw(struct bc_state *bcs)
+static void gigaset_freebcshw(struct bc_state *bcs)
 {
 	struct bas_bc_state *ubc = bcs-&amp;gt;hw.bas;
 	int i;
 
 	if (!ubc)
-		return 0;
+		return;
 
 	/* kill URBs and tasklets before freeing - better safe than sorry */
 	ubc-&amp;gt;running = 0;
@@ -2104,14 +2102,13 @@ static int gigaset_freebcshw(struct bc_state *bcs)
 	kfree(ubc-&amp;gt;isooutbuf);
 	kfree(ubc);
 	bcs-&amp;gt;hw.bas = NULL;
-	return 1;
 }
 
 /* Initialize hardware dependent part of the B channel structure
  * parameter:
  *	bcs	B channel structure
  * return value:
- *	!=0 on success
+ *	0 on success, error code &amp;lt; 0 on failure
  */
 static int gigaset_initbcshw(struct bc_state *bcs)
 {
@@ -2121,7 +2118,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)
 	bcs-&amp;gt;hw.bas = ubc = kmalloc(sizeof(struct bas_bc_state), GFP_KERNEL);
 	if (!ubc) {
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
-		return 0;
+		return -ENOMEM;
 	}
 
 	ubc-&amp;gt;running = 0;
@@ -2138,7 +2135,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
 		kfree(ubc);
 		bcs-&amp;gt;hw.bas = NULL;
-		return 0;
+		return -ENOMEM;
 	}
 	tasklet_init(&amp;amp;ubc-&amp;gt;sent_tasklet,
 		     write_iso_tasklet, (unsigned long) bcs);
@@ -2163,7 +2160,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)
 	ubc-&amp;gt;stolen0s = 0;
 	tasklet_init(&amp;amp;ubc-&amp;gt;rcvd_tasklet,
 		     read_iso_tasklet, (unsigned long) bcs);
-	return 1;
+	return 0;
 }
 
 static void gigaset_reinitbcshw(struct bc_state *bcs)
@@ -2186,6 +2183,12 @@ static void gigaset_freecshw(struct cardstate *cs)
 	cs-&amp;gt;hw.bas = NULL;
 }
 
+/* Initialize hardware dependent part of the cardstate structure
+ * parameter:
+ *	cs	cardstate structure
+ * return value:
+ *	0 on success, error code &amp;lt; 0 on failure
+ */
 static int gigaset_initcshw(struct cardstate *cs)
 {
 	struct bas_cardstate *ucs;
@@ -2193,13 +2196,13 @@ static int gigaset_initcshw(struct cardstate *cs)
 	cs-&amp;gt;hw.bas = ucs = kmalloc(sizeof *ucs, GFP_KERNEL);
 	if (!ucs) {
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
-		return 0;
+		return -ENOMEM;
 	}
 	ucs-&amp;gt;int_in_buf = kmalloc(IP_MSGSIZE, GFP_KERNEL);
 	if (!ucs-&amp;gt;int_in_buf) {
 		kfree(ucs);
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
-		return 0;
+		return -ENOMEM;
 	}
 
 	ucs-&amp;gt;urb_cmd_in = NULL;
@@ -2218,7 +2221,7 @@ static int gigaset_initcshw(struct cardstate *cs)
 	init_waitqueue_head(&amp;amp;ucs-&amp;gt;waitqueue);
 	INIT_WORK(&amp;amp;ucs-&amp;gt;int_in_wq, int_in_work);
 
-	return 1;
+	return 0;
 }
 
 /* freeurbs
@@ -2378,18 +2381,20 @@ static int gigaset_probe(struct usb_interface *interface,
 	/* save address of controller structure */
 	usb_set_intfdata(interface, cs);
 
-	if (!gigaset_start(cs))
+	rc = gigaset_start(cs);
+	if (rc &amp;lt; 0)
 		goto error;
 
 	return 0;
 
 allocerr:
 	dev_err(cs-&amp;gt;dev, &amp;quot;could not allocate URBs\n&amp;quot;);
+	rc = -ENOMEM;
 error:
 	freeurbs(cs);
 	usb_set_intfdata(interface, NULL);
 	gigaset_freecs(cs);
-	return -ENODEV;
+	return rc;
 }
 
 /* gigaset_disconnect
diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c
index 86cee65..27e4a3e 100644
--- a/drivers/isdn/gigaset/capi.c
+++ b/drivers/isdn/gigaset/capi.c
@@ -2346,7 +2346,7 @@ static const struct file_operations gigaset_proc_fops = {
  * @cs:		device descriptor structure.
  * @isdnid:	device name.
  *
- * Return value: 1 for success, 0 for failure
+ * Return value: 0 on success, error code &amp;lt; 0 on failure
  */
 int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 {
@@ -2356,7 +2356,7 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 	iif = kmalloc(sizeof(*iif), GFP_KERNEL);
 	if (!iif) {
 		pr_err(&amp;quot;%s: out of memory\n&amp;quot;, __func__);
-		return 0;
+		return -ENOMEM;
 	}
 
 	/* prepare controller structure */
@@ -2380,12 +2380,12 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 	if (rc) {
 		pr_err(&amp;quot;attach_capi_ctr failed (%d)\n&amp;quot;, rc);
 		kfree(iif);
-		return 0;
+		return rc;
 	}
 
 	cs-&amp;gt;iif = iif;
 	cs-&amp;gt;hw_hdr_len = CAPI_DATA_B3_REQ_LEN;
-	return 1;
+	return 0;
 }
 
 /**
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c
index 6c306d4..aa41485 100644
--- a/drivers/isdn/gigaset/common.c
+++ b/drivers/isdn/gigaset/common.c
@@ -194,13 +194,13 @@ int gigaset_get_channel(struct bc_state *bcs)
 		gig_dbg(DEBUG_CHANNEL, &amp;quot;could not allocate channel %d&amp;quot;,
 			bcs-&amp;gt;channel);
 		spin_unlock_irqrestore(&amp;amp;bcs-&amp;gt;cs-&amp;gt;lock, flags);
-		return 0;
+		return -EBUSY;
 	}
 	++bcs-&amp;gt;use_count;
 	bcs-&amp;gt;busy = 1;
 	gig_dbg(DEBUG_CHANNEL, &amp;quot;allocated channel %d&amp;quot;, bcs-&amp;gt;channel);
 	spin_unlock_irqrestore(&amp;amp;bcs-&amp;gt;cs-&amp;gt;lock, flags);
-	return 1;
+	return 0;
 }
 
 struct bc_state *gigaset_get_free_channel(struct cardstate *cs)
@@ -258,7 +258,7 @@ int gigaset_get_channels(struct cardstate *cs)
 			spin_unlock_irqrestore(&amp;amp;cs-&amp;gt;lock, flags);
 			gig_dbg(DEBUG_CHANNEL,
 				&amp;quot;could not allocate all channels&amp;quot;);
-			return 0;
+			return -EBUSY;
 		}
 	for (i = 0; i &amp;lt; cs-&amp;gt;channels; ++i)
 		++cs-&amp;gt;bcs.use_count;
@@ -266,7 +266,7 @@ int gigaset_get_channels(struct cardstate *cs)
 
 	gig_dbg(DEBUG_CHANNEL, &amp;quot;allocated all channels&amp;quot;);
 
-	return 1;
+	return 0;
 }
 
 void gigaset_free_channels(struct cardstate *cs)
@@ -388,8 +388,7 @@ static void gigaset_freebcs(struct bc_state *bcs)
 	int i;
 
 	gig_dbg(DEBUG_INIT, &amp;quot;freeing bcs[%d]-&amp;gt;hw&amp;quot;, bcs-&amp;gt;channel);
-	if (!bcs-&amp;gt;cs-&amp;gt;ops-&amp;gt;freebcshw(bcs))
-		gig_dbg(DEBUG_INIT, &amp;quot;failed&amp;quot;);
+	bcs-&amp;gt;cs-&amp;gt;ops-&amp;gt;freebcshw(bcs);
 
 	gig_dbg(DEBUG_INIT, &amp;quot;clearing bcs[%d]-&amp;gt;at_state&amp;quot;, bcs-&amp;gt;channel);
 	clear_at_state(&amp;amp;bcs-&amp;gt;at_state);
@@ -566,6 +565,8 @@ static void gigaset_inbuf_init(struct inbuf_t *inbuf, struct cardstate *cs)
  * @inbuf:	buffer structure.
  * @src:	received data.
  * @numbytes:	number of bytes received.
+ *
+ * Return value: !=0 if some data was appended
  */
 int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src,
 		       unsigned numbytes)
@@ -609,8 +610,8 @@ int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src,
 EXPORT_SYMBOL_GPL(gigaset_fill_inbuf);
 
 /* Initialize the b-channel structure */
-static struct bc_state *gigaset_initbcs(struct bc_state *bcs,
-					struct cardstate *cs, int channel)
+static int gigaset_initbcs(struct bc_state *bcs, struct cardstate *cs,
+			   int channel)
 {
 	int i;
 
@@ -649,11 +650,7 @@ static struct bc_state *gigaset_initbcs(struct bc_state *bcs,
 	bcs-&amp;gt;apconnstate = 0;
 
 	gig_dbg(DEBUG_INIT, &amp;quot;  setting up bcs[%d]-&amp;gt;hw&amp;quot;, channel);
-	if (cs-&amp;gt;ops-&amp;gt;initbcshw(bcs))
-		return bcs;
-
-	gig_dbg(DEBUG_INIT, &amp;quot;  failed&amp;quot;);
-	return NULL;
+	return cs-&amp;gt;ops-&amp;gt;initbcshw(bcs);
 }
 
 /**
@@ -752,7 +749,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
 	cs-&amp;gt;cmdbytes = 0;
 
 	gig_dbg(DEBUG_INIT, &amp;quot;setting up iif&amp;quot;);
-	if (!gigaset_isdn_regdev(cs, modulename)) {
+	if (gigaset_isdn_regdev(cs, modulename) &amp;lt; 0) {
 		pr_err(&amp;quot;error registering ISDN device\n&amp;quot;);
 		goto error;
 	}
@@ -760,7 +757,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
 	make_valid(cs, VALID_ID);
 	++cs-&amp;gt;cs_init;
 	gig_dbg(DEBUG_INIT, &amp;quot;setting up hw&amp;quot;);
-	if (!cs-&amp;gt;ops-&amp;gt;initcshw(cs))
+	if (cs-&amp;gt;ops-&amp;gt;initcshw(cs) &amp;lt; 0)
 		goto error;
 
 	++cs-&amp;gt;cs_init;
@@ -774,7 +771,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
 	/* set up channel data structures */
 	for (i = 0; i &amp;lt; channels; ++i) {
 		gig_dbg(DEBUG_INIT, &amp;quot;setting up bcs[%d]&amp;quot;, i);
-		if (!gigaset_initbcs(cs-&amp;gt;bcs + i, cs, i)) {
+		if (gigaset_initbcs(cs-&amp;gt;bcs + i, cs, i) &amp;lt; 0) {
 			pr_err(&amp;quot;could not allocate channel %d data\n&amp;quot;, i);
 			goto error;
 		}
@@ -869,7 +866,7 @@ static void cleanup_cs(struct cardstate *cs)
 
 	for (i = 0; i &amp;lt; cs-&amp;gt;channels; ++i) {
 		gigaset_freebcs(cs-&amp;gt;bcs + i);
-		if (!gigaset_initbcs(cs-&amp;gt;bcs + i, cs, i))
+		if (gigaset_initbcs(cs-&amp;gt;bcs + i, cs, i) &amp;lt; 0)
 			pr_err(&amp;quot;could not allocate channel %d data\n&amp;quot;, i);
 	}
 
@@ -890,14 +887,14 @@ static void cleanup_cs(struct cardstate *cs)
  * waiting for completion of the initialization.
  *
  * Return value:
- *	1 - success, 0 - error
+ *	0 on success, error code &amp;lt; 0 on failure
  */
 int gigaset_start(struct cardstate *cs)
 {
 	unsigned long flags;
 
 	if (mutex_lock_interruptible(&amp;amp;cs-&amp;gt;mutex))
-		return 0;
+		return -EBUSY;
 
 	spin_lock_irqsave(&amp;amp;cs-&amp;gt;lock, flags);
 	cs-&amp;gt;connected = 1;
@@ -921,11 +918,11 @@ int gigaset_start(struct cardstate *cs)
 	wait_event(cs-&amp;gt;waitqueue, !cs-&amp;gt;waiting);
 
 	mutex_unlock(&amp;amp;cs-&amp;gt;mutex);
-	return 1;
+	return 0;
 
 error:
 	mutex_unlock(&amp;amp;cs-&amp;gt;mutex);
-	return 0;
+	return -ENOMEM;
 }
 EXPORT_SYMBOL_GPL(gigaset_start);
 
@@ -937,7 +934,7 @@ EXPORT_SYMBOL_GPL(gigaset_start);
  * waiting for completion of the shutdown.
  *
  * Return value:
- *	0 - success, -1 - error (no device associated)
+ *	0 - success, -ENODEV - error (no device associated)
  */
 int gigaset_shutdown(struct cardstate *cs)
 {
@@ -945,7 +942,7 @@ int gigaset_shutdown(struct cardstate *cs)
 
 	if (!(cs-&amp;gt;flags &amp;amp; VALID_MINOR)) {
 		mutex_unlock(&amp;amp;cs-&amp;gt;mutex);
-		return -1;
+		return -ENODEV;
 	}
 
 	cs-&amp;gt;waiting = 1;
diff --git a/drivers/isdn/gigaset/dummyll.c b/drivers/isdn/gigaset/dummyll.c
index 19b1c77..570c2d5 100644
--- a/drivers/isdn/gigaset/dummyll.c
+++ b/drivers/isdn/gigaset/dummyll.c
@@ -60,7 +60,7 @@ void gigaset_isdn_stop(struct cardstate *cs)
 
 int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 {
-	return 1;
+	return 0;
 }
 
 void gigaset_isdn_unregdev(struct cardstate *cs)
diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
index 8391e09..2e6963d 100644
--- a/drivers/isdn/gigaset/ev-layer.c
+++ b/drivers/isdn/gigaset/ev-layer.c
@@ -658,7 +658,7 @@ static inline struct at_state_t *get_free_channel(struct cardstate *cs,
 	struct at_state_t *ret;
 
 	for (i = 0; i &amp;lt; cs-&amp;gt;channels; ++i)
-		if (gigaset_get_channel(cs-&amp;gt;bcs + i)) {
+		if (gigaset_get_channel(cs-&amp;gt;bcs + i) &amp;gt;= 0) {
 			ret = &amp;amp;cs-&amp;gt;bcs.at_state;
 			ret-&amp;gt;cid = cid;
 			return ret;
@@ -923,18 +923,18 @@ static void do_stop(struct cardstate *cs)
  * channel &amp;gt;= 0: getting cid for the channel failed
  * channel &amp;lt; 0:  entering cid mode failed
  *
- * returns 0 on failure
+ * returns 0 on success, &amp;lt;0 on failure
  */
 static int reinit_and_retry(struct cardstate *cs, int channel)
 {
 	int i;
 
 	if (--cs-&amp;gt;retry_count &amp;lt;= 0)
-		return 0;
+		return -EFAULT;
 
 	for (i = 0; i &amp;lt; cs-&amp;gt;channels; ++i)
 		if (cs-&amp;gt;bcs.at_state.cid &amp;gt; 0)
-			return 0;
+			return -EBUSY;
 
 	if (channel &amp;lt; 0)
 		dev_warn(cs-&amp;gt;dev,
@@ -945,7 +945,7 @@ static int reinit_and_retry(struct cardstate *cs, int channel)
 		cs-&amp;gt;bcs[channel].at_state.pending_commands |= PC_CID;
 	}
 	schedule_init(cs, MS_INIT);
-	return 1;
+	return 0;
 }
 
 static int at_state_invalid(struct cardstate *cs,
@@ -1016,7 +1016,7 @@ static int do_lock(struct cardstate *cs)
 			if (cs-&amp;gt;bcs.at_state.pending_commands)
 				return -EBUSY;
 
-		if (!gigaset_get_channels(cs))
+		if (gigaset_get_channels(cs) &amp;lt; 0)
 			return -EBUSY;
 
 		break;
@@ -1125,7 +1125,7 @@ static void do_action(int action, struct cardstate *cs,
 			init_failed(cs, M_UNKNOWN);
 			break;
 		}
-		if (!reinit_and_retry(cs, -1))
+		if (reinit_and_retry(cs, -1) &amp;lt; 0)
 			schedule_init(cs, MS_RECOVER);
 		break;
 	case ACT_FAILUMODE:
@@ -1268,7 +1268,7 @@ static void do_action(int action, struct cardstate *cs,
 	case ACT_FAILCID:
 		cs-&amp;gt;cur_at_seq = SEQ_NONE;
 		channel = cs-&amp;gt;curchannel;
-		if (!reinit_and_retry(cs, channel)) {
+		if (reinit_and_retry(cs, channel) &amp;lt; 0) {
 			dev_warn(cs-&amp;gt;dev,
 				 &amp;quot;Could not get a call ID. Cannot dial.\n&amp;quot;);
 			at_state2 = &amp;amp;cs-&amp;gt;bcs[channel].at_state;
diff --git a/drivers/isdn/gigaset/gigaset.h b/drivers/isdn/gigaset/gigaset.h
index eae7351..8e2fc8f 100644
--- a/drivers/isdn/gigaset/gigaset.h
+++ b/drivers/isdn/gigaset/gigaset.h
@@ -583,7 +583,7 @@ struct gigaset_ops {
 	int (*initbcshw)(struct bc_state *bcs);
 
 	/* Called by gigaset_freecs() for freeing bcs-&amp;gt;hw.xxx */
-	int (*freebcshw)(struct bc_state *bcs);
+	void (*freebcshw)(struct bc_state *bcs);
 
 	/* Called by gigaset_bchannel_down() for resetting bcs-&amp;gt;hw.xxx */
 	void (*reinitbcshw)(struct bc_state *bcs);
diff --git a/drivers/isdn/gigaset/i4l.c b/drivers/isdn/gigaset/i4l.c
index 0f13eb1..2d75329 100644
--- a/drivers/isdn/gigaset/i4l.c
+++ b/drivers/isdn/gigaset/i4l.c
@@ -229,7 +229,7 @@ static int command_from_LL(isdn_ctrl *cntrl)
 			return -EINVAL;
 		}
 		bcs = cs-&amp;gt;bcs + ch;
-		if (!gigaset_get_channel(bcs)) {
+		if (gigaset_get_channel(bcs) &amp;lt; 0) {
 			dev_err(cs-&amp;gt;dev, &amp;quot;ISDN_CMD_DIAL: channel not free\n&amp;quot;);
 			return -EBUSY;
 		}
@@ -618,7 +618,7 @@ void gigaset_isdn_stop(struct cardstate *cs)
  * @cs:		device descriptor structure.
  * @isdnid:	device name.
  *
- * Return value: 1 for success, 0 for failure
+ * Return value: 0 on success, error code &amp;lt; 0 on failure
  */
 int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 {
@@ -627,14 +627,14 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 	iif = kmalloc(sizeof *iif, GFP_KERNEL);
 	if (!iif) {
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
-		return 0;
+		return -ENOMEM;
 	}
 
 	if (snprintf(iif-&amp;gt;id, sizeof iif-&amp;gt;id, &amp;quot;%s_%u&amp;quot;, isdnid, cs-&amp;gt;minor_index)
 	    &amp;gt;= sizeof iif-&amp;gt;id) {
 		pr_err(&amp;quot;ID too long: %s\n&amp;quot;, isdnid);
 		kfree(iif);
-		return 0;
+		return -EINVAL;
 	}
 
 	iif-&amp;gt;owner = THIS_MODULE;
@@ -656,13 +656,13 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)
 	if (!register_isdn(iif)) {
 		pr_err(&amp;quot;register_isdn failed\n&amp;quot;);
 		kfree(iif);
-		return 0;
+		return -EINVAL;
 	}
 
 	cs-&amp;gt;iif = iif;
 	cs-&amp;gt;myid = iif-&amp;gt;channels;		/* Set my device id */
 	cs-&amp;gt;hw_hdr_len = HW_HDR_LEN;
-	return 1;
+	return 0;
 }
 
 /**
diff --git a/drivers/isdn/gigaset/isocdata.c b/drivers/isdn/gigaset/isocdata.c
index a351c16..bc29f1d 100644
--- a/drivers/isdn/gigaset/isocdata.c
+++ b/drivers/isdn/gigaset/isocdata.c
@@ -56,7 +56,7 @@ static inline int isowbuf_freebytes(struct isowbuf_t *iwb)
 
 /* start writing
  * acquire the write semaphore
- * return true if acquired, false if busy
+ * return 0 if acquired, &amp;lt;0 if busy
  */
 static inline int isowbuf_startwrite(struct isowbuf_t *iwb)
 {
@@ -64,12 +64,12 @@ static inline int isowbuf_startwrite(struct isowbuf_t *iwb)
 		atomic_inc(&amp;amp;iwb-&amp;gt;writesem);
 		gig_dbg(DEBUG_ISO, &amp;quot;%s: couldn't acquire iso write semaphore&amp;quot;,
 			__func__);
-		return 0;
+		return -EBUSY;
 	}
 	gig_dbg(DEBUG_ISO,
 		&amp;quot;%s: acquired iso write semaphore, data[write]=%02x, nbits=%d&amp;quot;,
 		__func__, iwb-&amp;gt;data[iwb-&amp;gt;write], iwb-&amp;gt;wbits);
-	return 1;
+	return 0;
 }
 
 /* finish writing
@@ -158,7 +158,7 @@ int gigaset_isowbuf_getbytes(struct isowbuf_t *iwb, int size)
 		/* no wraparound in valid data */
 		if (limit &amp;gt;= write) {
 			/* append idle frame */
-			if (!isowbuf_startwrite(iwb))
+			if (isowbuf_startwrite(iwb) &amp;lt; 0)
 				return -EBUSY;
 			/* write position could have changed */
 			write = iwb-&amp;gt;write;
@@ -403,7 +403,7 @@ static inline int hdlc_buildframe(struct isowbuf_t *iwb,
 	unsigned char c;
 
 	if (isowbuf_freebytes(iwb) &amp;lt; count + count / 5 + 6 ||
-	    !isowbuf_startwrite(iwb)) {
+	    isowbuf_startwrite(iwb) &amp;lt; 0) {
 		gig_dbg(DEBUG_ISO, &amp;quot;%s: %d bytes free -&amp;gt; -EAGAIN&amp;quot;,
 			__func__, isowbuf_freebytes(iwb));
 		return -EAGAIN;
@@ -457,7 +457,7 @@ static inline int trans_buildframe(struct isowbuf_t *iwb,
 		return iwb-&amp;gt;write;
 
 	if (isowbuf_freebytes(iwb) &amp;lt; count ||
-	    !isowbuf_startwrite(iwb)) {
+	    isowbuf_startwrite(iwb) &amp;lt; 0) {
 		gig_dbg(DEBUG_ISO, &amp;quot;can't put %d bytes&amp;quot;, count);
 		return -EAGAIN;
 	}
diff --git a/drivers/isdn/gigaset/ser-gigaset.c b/drivers/isdn/gigaset/ser-gigaset.c
index 6f3fd4c..8c91fd5 100644
--- a/drivers/isdn/gigaset/ser-gigaset.c
+++ b/drivers/isdn/gigaset/ser-gigaset.c
@@ -340,17 +340,16 @@ static int gigaset_initbcshw(struct bc_state *bcs)
 {
 	/* unused */
 	bcs-&amp;gt;hw.ser = NULL;
-	return 1;
+	return 0;
 }
 
 /*
  * Free B channel structure
  * Called by &amp;quot;gigaset_freebcs&amp;quot; in common.c
  */
-static int gigaset_freebcshw(struct bc_state *bcs)
+static void gigaset_freebcshw(struct bc_state *bcs)
 {
 	/* unused */
-	return 1;
 }
 
 /*
@@ -398,7 +397,7 @@ static int gigaset_initcshw(struct cardstate *cs)
 	scs = kzalloc(sizeof(struct ser_cardstate), GFP_KERNEL);
 	if (!scs) {
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
-		return 0;
+		return -ENOMEM;
 	}
 	cs-&amp;gt;hw.ser = scs;
 
@@ -410,13 +409,13 @@ static int gigaset_initcshw(struct cardstate *cs)
 		pr_err(&amp;quot;error %d registering platform device\n&amp;quot;, rc);
 		kfree(cs-&amp;gt;hw.ser);
 		cs-&amp;gt;hw.ser = NULL;
-		return 0;
+		return rc;
 	}
 	dev_set_drvdata(&amp;amp;cs-&amp;gt;hw.ser-&amp;gt;dev.dev, cs);
 
 	tasklet_init(&amp;amp;cs-&amp;gt;write_tasklet,
 		     gigaset_modem_fill, (unsigned long) cs);
-	return 1;
+	return 0;
 }
 
 /*
@@ -503,6 +502,7 @@ static int
 gigaset_tty_open(struct tty_struct *tty)
 {
 	struct cardstate *cs;
+	int rc;
 
 	gig_dbg(DEBUG_INIT, &amp;quot;Starting HLL for Gigaset M101&amp;quot;);
 
@@ -515,8 +515,10 @@ gigaset_tty_open(struct tty_struct *tty)
 
 	/* allocate memory for our device state and initialize it */
 	cs = gigaset_initcs(driver, 1, 1, 0, cidmode, GIGASET_MODULENAME);
-	if (!cs)
+	if (!cs) {
+		rc = -ENODEV;
 		goto error;
+	}
 
 	cs-&amp;gt;dev = &amp;amp;cs-&amp;gt;hw.ser-&amp;gt;dev.dev;
 	cs-&amp;gt;hw.ser-&amp;gt;tty = tty;
@@ -530,7 +532,8 @@ gigaset_tty_open(struct tty_struct *tty)
 	 */
 	if (startmode == SM_LOCKED)
 		cs-&amp;gt;mstate = MS_LOCKED;
-	if (!gigaset_start(cs)) {
+	rc = gigaset_start(cs);
+	if (rc &amp;lt; 0) {
 		tasklet_kill(&amp;amp;cs-&amp;gt;write_tasklet);
 		goto error;
 	}
@@ -542,7 +545,7 @@ error:
 	gig_dbg(DEBUG_INIT, &amp;quot;Startup of HLL failed&amp;quot;);
 	tty-&amp;gt;disc_data = NULL;
 	gigaset_freecs(cs);
-	return -ENODEV;
+	return rc;
 }
 
 /*
diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
index 049da67..bb12d80 100644
--- a/drivers/isdn/gigaset/usb-gigaset.c
+++ b/drivers/isdn/gigaset/usb-gigaset.c
@@ -549,10 +549,9 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
 			       0, 0, &amp;amp;buf, 6, 2000);
 }
 
-static int gigaset_freebcshw(struct bc_state *bcs)
+static void gigaset_freebcshw(struct bc_state *bcs)
 {
 	/* unused */
-	return 1;
 }
 
 /* Initialize the b-channel structure */
@@ -560,7 +559,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)
 {
 	/* unused */
 	bcs-&amp;gt;hw.usb = NULL;
-	return 1;
+	return 0;
 }
 
 static void gigaset_reinitbcshw(struct bc_state *bcs)
@@ -582,7 +581,7 @@ static int gigaset_initcshw(struct cardstate *cs)
 		kmalloc(sizeof(struct usb_cardstate), GFP_KERNEL);
 	if (!ucs) {
 		pr_err(&amp;quot;out of memory\n&amp;quot;);
-		return 0;
+		return -ENOMEM;
 	}
 
 	ucs-&amp;gt;bchars[0] = 0;
@@ -597,7 +596,7 @@ static int gigaset_initcshw(struct cardstate *cs)
 	tasklet_init(&amp;amp;cs-&amp;gt;write_tasklet,
 		     gigaset_modem_fill, (unsigned long) cs);
 
-	return 1;
+	return 0;
 }
 
 /* Send data from current skb to the device. */
@@ -766,9 +765,9 @@ static int gigaset_probe(struct usb_interface *interface,
 	if (startmode == SM_LOCKED)
 		cs-&amp;gt;mstate = MS_LOCKED;
 
-	if (!gigaset_start(cs)) {
+	retval = gigaset_start(cs);
+	if (retval &amp;lt; 0) {
 		tasklet_kill(&amp;amp;cs-&amp;gt;write_tasklet);
-		retval = -ENODEV;
 		goto error;
 	}
 	return 0;
@@ -898,8 +897,10 @@ static int __init usb_gigaset_init(void)
 	driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS,
 				    GIGASET_MODULENAME, GIGASET_DEVNAME,
 				    &amp;amp;ops, THIS_MODULE);
-	if (driver == NULL)
+	if (driver == NULL) {
+		result = -ENOMEM;
 		goto error;
+	}
 
 	/* register this driver with the USB subsystem */
 	result = usb_register(&amp;amp;gigaset_usb_driver);
@@ -915,7 +916,7 @@ error:
 	if (driver)
 		gigaset_freedriver(driver);
 	driver = NULL;
-	return -1;
+	return result;
 }
 
 /*
-- 
1.7.3.4

--
To unsubscribe from this list: send the line &amp;quot;unsubscribe linux-kernel&amp;quot; in
the body of a message to &amp;#109;&amp;#97;&amp;#106;&amp;#111;&amp;#114;&amp;#100;&amp;#111;&amp;#109;&amp;#111;&amp;#64;&amp;#118;&amp;#103;&amp;#101;&amp;#114;&amp;#46;&amp;#107;&amp;#101;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#46;&amp;#111;&amp;#114;&amp;#103;
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/</description>
        <link>http://www.serverphorums.com/read.php?12,486060,486060#msg-486060</link>
        <lastBuildDate>Mon, 20 May 2013 00:07:37 +0200</lastBuildDate>
        <generator>Phorum 5.2.18</generator>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,486060,486060#msg-486060</guid>
            <title>[PATCH 6/8] isdn/gigaset: unify function return values</title>
            <link>http://www.serverphorums.com/read.php?12,486060,486060#msg-486060</link>
            <description><![CDATA[ Various functions in the Gigaset driver were using different<br />
conventions for the meaning of their int return values.<br />
Align them to the usual negative error numbers convention.<br />
<br />
Inspired-by: Julia Lawall &lt;julia.lawall@lip6.fr&gt;<br />
Signed-off-by: Tilman Schmidt &lt;tilman@imap.cc&gt;<br />
---<br />
 drivers/isdn/gigaset/bas-gigaset.c |   33 ++++++++++++++++-----------<br />
 drivers/isdn/gigaset/capi.c        |    8 +++---<br />
 drivers/isdn/gigaset/common.c      |   43 ++++++++++++++++-------------------<br />
 drivers/isdn/gigaset/dummyll.c     |    2 +-<br />
 drivers/isdn/gigaset/ev-layer.c    |   16 ++++++------<br />
 drivers/isdn/gigaset/gigaset.h     |    2 +-<br />
 drivers/isdn/gigaset/i4l.c         |   12 +++++-----<br />
 drivers/isdn/gigaset/isocdata.c    |   12 +++++-----<br />
 drivers/isdn/gigaset/ser-gigaset.c |   21 ++++++++++-------<br />
 drivers/isdn/gigaset/usb-gigaset.c |   19 ++++++++-------<br />
 10 files changed, 87 insertions(+), 81 deletions(-)<br />
<br />
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c<br />
index d651523..3b9278b 100644<br />
--- a/drivers/isdn/gigaset/bas-gigaset.c<br />
+++ b/drivers/isdn/gigaset/bas-gigaset.c<br />
@@ -2077,16 +2077,14 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])<br />
 /* Free hardware dependent part of the B channel structure<br />
  * parameter:<br />
  *	bcs	B channel structure<br />
- * return value:<br />
- *	!=0 on success<br />
  */<br />
-static int gigaset_freebcshw(struct bc_state *bcs)<br />
+static void gigaset_freebcshw(struct bc_state *bcs)<br />
 {<br />
 	struct bas_bc_state *ubc = bcs-&gt;hw.bas;<br />
 	int i;<br />
 <br />
 	if (!ubc)<br />
-		return 0;<br />
+		return;<br />
 <br />
 	/* kill URBs and tasklets before freeing - better safe than sorry */<br />
 	ubc-&gt;running = 0;<br />
@@ -2104,14 +2102,13 @@ static int gigaset_freebcshw(struct bc_state *bcs)<br />
 	kfree(ubc-&gt;isooutbuf);<br />
 	kfree(ubc);<br />
 	bcs-&gt;hw.bas = NULL;<br />
-	return 1;<br />
 }<br />
 <br />
 /* Initialize hardware dependent part of the B channel structure<br />
  * parameter:<br />
  *	bcs	B channel structure<br />
  * return value:<br />
- *	!=0 on success<br />
+ *	0 on success, error code &lt; 0 on failure<br />
  */<br />
 static int gigaset_initbcshw(struct bc_state *bcs)<br />
 {<br />
@@ -2121,7 +2118,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)<br />
 	bcs-&gt;hw.bas = ubc = kmalloc(sizeof(struct bas_bc_state), GFP_KERNEL);<br />
 	if (!ubc) {<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 <br />
 	ubc-&gt;running = 0;<br />
@@ -2138,7 +2135,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
 		kfree(ubc);<br />
 		bcs-&gt;hw.bas = NULL;<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 	tasklet_init(&amp;ubc-&gt;sent_tasklet,<br />
 		     write_iso_tasklet, (unsigned long) bcs);<br />
@@ -2163,7 +2160,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)<br />
 	ubc-&gt;stolen0s = 0;<br />
 	tasklet_init(&amp;ubc-&gt;rcvd_tasklet,<br />
 		     read_iso_tasklet, (unsigned long) bcs);<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 static void gigaset_reinitbcshw(struct bc_state *bcs)<br />
@@ -2186,6 +2183,12 @@ static void gigaset_freecshw(struct cardstate *cs)<br />
 	cs-&gt;hw.bas = NULL;<br />
 }<br />
 <br />
+/* Initialize hardware dependent part of the cardstate structure<br />
+ * parameter:<br />
+ *	cs	cardstate structure<br />
+ * return value:<br />
+ *	0 on success, error code &lt; 0 on failure<br />
+ */<br />
 static int gigaset_initcshw(struct cardstate *cs)<br />
 {<br />
 	struct bas_cardstate *ucs;<br />
@@ -2193,13 +2196,13 @@ static int gigaset_initcshw(struct cardstate *cs)<br />
 	cs-&gt;hw.bas = ucs = kmalloc(sizeof *ucs, GFP_KERNEL);<br />
 	if (!ucs) {<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 	ucs-&gt;int_in_buf = kmalloc(IP_MSGSIZE, GFP_KERNEL);<br />
 	if (!ucs-&gt;int_in_buf) {<br />
 		kfree(ucs);<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 <br />
 	ucs-&gt;urb_cmd_in = NULL;<br />
@@ -2218,7 +2221,7 @@ static int gigaset_initcshw(struct cardstate *cs)<br />
 	init_waitqueue_head(&amp;ucs-&gt;waitqueue);<br />
 	INIT_WORK(&amp;ucs-&gt;int_in_wq, int_in_work);<br />
 <br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /* freeurbs<br />
@@ -2378,18 +2381,20 @@ static int gigaset_probe(struct usb_interface *interface,<br />
 	/* save address of controller structure */<br />
 	usb_set_intfdata(interface, cs);<br />
 <br />
-	if (!gigaset_start(cs))<br />
+	rc = gigaset_start(cs);<br />
+	if (rc &lt; 0)<br />
 		goto error;<br />
 <br />
 	return 0;<br />
 <br />
 allocerr:<br />
 	dev_err(cs-&gt;dev, &quot;could not allocate URBs\n&quot;);<br />
+	rc = -ENOMEM;<br />
 error:<br />
 	freeurbs(cs);<br />
 	usb_set_intfdata(interface, NULL);<br />
 	gigaset_freecs(cs);<br />
-	return -ENODEV;<br />
+	return rc;<br />
 }<br />
 <br />
 /* gigaset_disconnect<br />
diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c<br />
index 86cee65..27e4a3e 100644<br />
--- a/drivers/isdn/gigaset/capi.c<br />
+++ b/drivers/isdn/gigaset/capi.c<br />
@@ -2346,7 +2346,7 @@ static const struct file_operations gigaset_proc_fops = {<br />
  * @cs:		device descriptor structure.<br />
  * @isdnid:	device name.<br />
  *<br />
- * Return value: 1 for success, 0 for failure<br />
+ * Return value: 0 on success, error code &lt; 0 on failure<br />
  */<br />
 int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 {<br />
@@ -2356,7 +2356,7 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 	iif = kmalloc(sizeof(*iif), GFP_KERNEL);<br />
 	if (!iif) {<br />
 		pr_err(&quot;%s: out of memory\n&quot;, __func__);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 <br />
 	/* prepare controller structure */<br />
@@ -2380,12 +2380,12 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 	if (rc) {<br />
 		pr_err(&quot;attach_capi_ctr failed (%d)\n&quot;, rc);<br />
 		kfree(iif);<br />
-		return 0;<br />
+		return rc;<br />
 	}<br />
 <br />
 	cs-&gt;iif = iif;<br />
 	cs-&gt;hw_hdr_len = CAPI_DATA_B3_REQ_LEN;<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /**<br />
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c<br />
index 6c306d4..aa41485 100644<br />
--- a/drivers/isdn/gigaset/common.c<br />
+++ b/drivers/isdn/gigaset/common.c<br />
@@ -194,13 +194,13 @@ int gigaset_get_channel(struct bc_state *bcs)<br />
 		gig_dbg(DEBUG_CHANNEL, &quot;could not allocate channel %d&quot;,<br />
 			bcs-&gt;channel);<br />
 		spin_unlock_irqrestore(&amp;bcs-&gt;cs-&gt;lock, flags);<br />
-		return 0;<br />
+		return -EBUSY;<br />
 	}<br />
 	++bcs-&gt;use_count;<br />
 	bcs-&gt;busy = 1;<br />
 	gig_dbg(DEBUG_CHANNEL, &quot;allocated channel %d&quot;, bcs-&gt;channel);<br />
 	spin_unlock_irqrestore(&amp;bcs-&gt;cs-&gt;lock, flags);<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 struct bc_state *gigaset_get_free_channel(struct cardstate *cs)<br />
@@ -258,7 +258,7 @@ int gigaset_get_channels(struct cardstate *cs)<br />
 			spin_unlock_irqrestore(&amp;cs-&gt;lock, flags);<br />
 			gig_dbg(DEBUG_CHANNEL,<br />
 				&quot;could not allocate all channels&quot;);<br />
-			return 0;<br />
+			return -EBUSY;<br />
 		}<br />
 	for (i = 0; i &lt; cs-&gt;channels; ++i)<br />
 		++cs-&gt;bcs<i>.use_count;<br />
@@ -266,7 +266,7 @@ int gigaset_get_channels(struct cardstate *cs)<br />
 <br />
 	gig_dbg(DEBUG_CHANNEL, &quot;allocated all channels&quot;);<br />
 <br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 void gigaset_free_channels(struct cardstate *cs)<br />
@@ -388,8 +388,7 @@ static void gigaset_freebcs(struct bc_state *bcs)<br />
 	int i;<br />
 <br />
 	gig_dbg(DEBUG_INIT, &quot;freeing bcs[%d]-&gt;hw&quot;, bcs-&gt;channel);<br />
-	if (!bcs-&gt;cs-&gt;ops-&gt;freebcshw(bcs))<br />
-		gig_dbg(DEBUG_INIT, &quot;failed&quot;);<br />
+	bcs-&gt;cs-&gt;ops-&gt;freebcshw(bcs);<br />
 <br />
 	gig_dbg(DEBUG_INIT, &quot;clearing bcs[%d]-&gt;at_state&quot;, bcs-&gt;channel);<br />
 	clear_at_state(&amp;bcs-&gt;at_state);<br />
@@ -566,6 +565,8 @@ static void gigaset_inbuf_init(struct inbuf_t *inbuf, struct cardstate *cs)<br />
  * @inbuf:	buffer structure.<br />
  * @src:	received data.<br />
  * @numbytes:	number of bytes received.<br />
+ *<br />
+ * Return value: !=0 if some data was appended<br />
  */<br />
 int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src,<br />
 		       unsigned numbytes)<br />
@@ -609,8 +610,8 @@ int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src,<br />
 EXPORT_SYMBOL_GPL(gigaset_fill_inbuf);<br />
 <br />
 /* Initialize the b-channel structure */<br />
-static struct bc_state *gigaset_initbcs(struct bc_state *bcs,<br />
-					struct cardstate *cs, int channel)<br />
+static int gigaset_initbcs(struct bc_state *bcs, struct cardstate *cs,<br />
+			   int channel)<br />
 {<br />
 	int i;<br />
 <br />
@@ -649,11 +650,7 @@ static struct bc_state *gigaset_initbcs(struct bc_state *bcs,<br />
 	bcs-&gt;apconnstate = 0;<br />
 <br />
 	gig_dbg(DEBUG_INIT, &quot;  setting up bcs[%d]-&gt;hw&quot;, channel);<br />
-	if (cs-&gt;ops-&gt;initbcshw(bcs))<br />
-		return bcs;<br />
-<br />
-	gig_dbg(DEBUG_INIT, &quot;  failed&quot;);<br />
-	return NULL;<br />
+	return cs-&gt;ops-&gt;initbcshw(bcs);<br />
 }<br />
 <br />
 /**<br />
@@ -752,7 +749,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,<br />
 	cs-&gt;cmdbytes = 0;<br />
 <br />
 	gig_dbg(DEBUG_INIT, &quot;setting up iif&quot;);<br />
-	if (!gigaset_isdn_regdev(cs, modulename)) {<br />
+	if (gigaset_isdn_regdev(cs, modulename) &lt; 0) {<br />
 		pr_err(&quot;error registering ISDN device\n&quot;);<br />
 		goto error;<br />
 	}<br />
@@ -760,7 +757,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,<br />
 	make_valid(cs, VALID_ID);<br />
 	++cs-&gt;cs_init;<br />
 	gig_dbg(DEBUG_INIT, &quot;setting up hw&quot;);<br />
-	if (!cs-&gt;ops-&gt;initcshw(cs))<br />
+	if (cs-&gt;ops-&gt;initcshw(cs) &lt; 0)<br />
 		goto error;<br />
 <br />
 	++cs-&gt;cs_init;<br />
@@ -774,7 +771,7 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,<br />
 	/* set up channel data structures */<br />
 	for (i = 0; i &lt; channels; ++i) {<br />
 		gig_dbg(DEBUG_INIT, &quot;setting up bcs[%d]&quot;, i);<br />
-		if (!gigaset_initbcs(cs-&gt;bcs + i, cs, i)) {<br />
+		if (gigaset_initbcs(cs-&gt;bcs + i, cs, i) &lt; 0) {<br />
 			pr_err(&quot;could not allocate channel %d data\n&quot;, i);<br />
 			goto error;<br />
 		}<br />
@@ -869,7 +866,7 @@ static void cleanup_cs(struct cardstate *cs)<br />
 <br />
 	for (i = 0; i &lt; cs-&gt;channels; ++i) {<br />
 		gigaset_freebcs(cs-&gt;bcs + i);<br />
-		if (!gigaset_initbcs(cs-&gt;bcs + i, cs, i))<br />
+		if (gigaset_initbcs(cs-&gt;bcs + i, cs, i) &lt; 0)<br />
 			pr_err(&quot;could not allocate channel %d data\n&quot;, i);<br />
 	}<br />
 <br />
@@ -890,14 +887,14 @@ static void cleanup_cs(struct cardstate *cs)<br />
  * waiting for completion of the initialization.<br />
  *<br />
  * Return value:<br />
- *	1 - success, 0 - error<br />
+ *	0 on success, error code &lt; 0 on failure<br />
  */<br />
 int gigaset_start(struct cardstate *cs)<br />
 {<br />
 	unsigned long flags;<br />
 <br />
 	if (mutex_lock_interruptible(&amp;cs-&gt;mutex))<br />
-		return 0;<br />
+		return -EBUSY;<br />
 <br />
 	spin_lock_irqsave(&amp;cs-&gt;lock, flags);<br />
 	cs-&gt;connected = 1;<br />
@@ -921,11 +918,11 @@ int gigaset_start(struct cardstate *cs)<br />
 	wait_event(cs-&gt;waitqueue, !cs-&gt;waiting);<br />
 <br />
 	mutex_unlock(&amp;cs-&gt;mutex);<br />
-	return 1;<br />
+	return 0;<br />
 <br />
 error:<br />
 	mutex_unlock(&amp;cs-&gt;mutex);<br />
-	return 0;<br />
+	return -ENOMEM;<br />
 }<br />
 EXPORT_SYMBOL_GPL(gigaset_start);<br />
 <br />
@@ -937,7 +934,7 @@ EXPORT_SYMBOL_GPL(gigaset_start);<br />
  * waiting for completion of the shutdown.<br />
  *<br />
  * Return value:<br />
- *	0 - success, -1 - error (no device associated)<br />
+ *	0 - success, -ENODEV - error (no device associated)<br />
  */<br />
 int gigaset_shutdown(struct cardstate *cs)<br />
 {<br />
@@ -945,7 +942,7 @@ int gigaset_shutdown(struct cardstate *cs)<br />
 <br />
 	if (!(cs-&gt;flags &amp; VALID_MINOR)) {<br />
 		mutex_unlock(&amp;cs-&gt;mutex);<br />
-		return -1;<br />
+		return -ENODEV;<br />
 	}<br />
 <br />
 	cs-&gt;waiting = 1;<br />
diff --git a/drivers/isdn/gigaset/dummyll.c b/drivers/isdn/gigaset/dummyll.c<br />
index 19b1c77..570c2d5 100644<br />
--- a/drivers/isdn/gigaset/dummyll.c<br />
+++ b/drivers/isdn/gigaset/dummyll.c<br />
@@ -60,7 +60,7 @@ void gigaset_isdn_stop(struct cardstate *cs)<br />
 <br />
 int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 {<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 void gigaset_isdn_unregdev(struct cardstate *cs)<br />
diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c<br />
index 8391e09..2e6963d 100644<br />
--- a/drivers/isdn/gigaset/ev-layer.c<br />
+++ b/drivers/isdn/gigaset/ev-layer.c<br />
@@ -658,7 +658,7 @@ static inline struct at_state_t *get_free_channel(struct cardstate *cs,<br />
 	struct at_state_t *ret;<br />
 <br />
 	for (i = 0; i &lt; cs-&gt;channels; ++i)<br />
-		if (gigaset_get_channel(cs-&gt;bcs + i)) {<br />
+		if (gigaset_get_channel(cs-&gt;bcs + i) &gt;= 0) {<br />
 			ret = &amp;cs-&gt;bcs<i>.at_state;<br />
 			ret-&gt;cid = cid;<br />
 			return ret;<br />
@@ -923,18 +923,18 @@ static void do_stop(struct cardstate *cs)<br />
  * channel &gt;= 0: getting cid for the channel failed<br />
  * channel &lt; 0:  entering cid mode failed<br />
  *<br />
- * returns 0 on failure<br />
+ * returns 0 on success, &lt;0 on failure<br />
  */<br />
 static int reinit_and_retry(struct cardstate *cs, int channel)<br />
 {<br />
 	int i;<br />
 <br />
 	if (--cs-&gt;retry_count &lt;= 0)<br />
-		return 0;<br />
+		return -EFAULT;<br />
 <br />
 	for (i = 0; i &lt; cs-&gt;channels; ++i)<br />
 		if (cs-&gt;bcs<i>.at_state.cid &gt; 0)<br />
-			return 0;<br />
+			return -EBUSY;<br />
 <br />
 	if (channel &lt; 0)<br />
 		dev_warn(cs-&gt;dev,<br />
@@ -945,7 +945,7 @@ static int reinit_and_retry(struct cardstate *cs, int channel)<br />
 		cs-&gt;bcs[channel].at_state.pending_commands |= PC_CID;<br />
 	}<br />
 	schedule_init(cs, MS_INIT);<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 static int at_state_invalid(struct cardstate *cs,<br />
@@ -1016,7 +1016,7 @@ static int do_lock(struct cardstate *cs)<br />
 			if (cs-&gt;bcs<i>.at_state.pending_commands)<br />
 				return -EBUSY;<br />
 <br />
-		if (!gigaset_get_channels(cs))<br />
+		if (gigaset_get_channels(cs) &lt; 0)<br />
 			return -EBUSY;<br />
 <br />
 		break;<br />
@@ -1125,7 +1125,7 @@ static void do_action(int action, struct cardstate *cs,<br />
 			init_failed(cs, M_UNKNOWN);<br />
 			break;<br />
 		}<br />
-		if (!reinit_and_retry(cs, -1))<br />
+		if (reinit_and_retry(cs, -1) &lt; 0)<br />
 			schedule_init(cs, MS_RECOVER);<br />
 		break;<br />
 	case ACT_FAILUMODE:<br />
@@ -1268,7 +1268,7 @@ static void do_action(int action, struct cardstate *cs,<br />
 	case ACT_FAILCID:<br />
 		cs-&gt;cur_at_seq = SEQ_NONE;<br />
 		channel = cs-&gt;curchannel;<br />
-		if (!reinit_and_retry(cs, channel)) {<br />
+		if (reinit_and_retry(cs, channel) &lt; 0) {<br />
 			dev_warn(cs-&gt;dev,<br />
 				 &quot;Could not get a call ID. Cannot dial.\n&quot;);<br />
 			at_state2 = &amp;cs-&gt;bcs[channel].at_state;<br />
diff --git a/drivers/isdn/gigaset/gigaset.h b/drivers/isdn/gigaset/gigaset.h<br />
index eae7351..8e2fc8f 100644<br />
--- a/drivers/isdn/gigaset/gigaset.h<br />
+++ b/drivers/isdn/gigaset/gigaset.h<br />
@@ -583,7 +583,7 @@ struct gigaset_ops {<br />
 	int (*initbcshw)(struct bc_state *bcs);<br />
 <br />
 	/* Called by gigaset_freecs() for freeing bcs-&gt;hw.xxx */<br />
-	int (*freebcshw)(struct bc_state *bcs);<br />
+	void (*freebcshw)(struct bc_state *bcs);<br />
 <br />
 	/* Called by gigaset_bchannel_down() for resetting bcs-&gt;hw.xxx */<br />
 	void (*reinitbcshw)(struct bc_state *bcs);<br />
diff --git a/drivers/isdn/gigaset/i4l.c b/drivers/isdn/gigaset/i4l.c<br />
index 0f13eb1..2d75329 100644<br />
--- a/drivers/isdn/gigaset/i4l.c<br />
+++ b/drivers/isdn/gigaset/i4l.c<br />
@@ -229,7 +229,7 @@ static int command_from_LL(isdn_ctrl *cntrl)<br />
 			return -EINVAL;<br />
 		}<br />
 		bcs = cs-&gt;bcs + ch;<br />
-		if (!gigaset_get_channel(bcs)) {<br />
+		if (gigaset_get_channel(bcs) &lt; 0) {<br />
 			dev_err(cs-&gt;dev, &quot;ISDN_CMD_DIAL: channel not free\n&quot;);<br />
 			return -EBUSY;<br />
 		}<br />
@@ -618,7 +618,7 @@ void gigaset_isdn_stop(struct cardstate *cs)<br />
  * @cs:		device descriptor structure.<br />
  * @isdnid:	device name.<br />
  *<br />
- * Return value: 1 for success, 0 for failure<br />
+ * Return value: 0 on success, error code &lt; 0 on failure<br />
  */<br />
 int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 {<br />
@@ -627,14 +627,14 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 	iif = kmalloc(sizeof *iif, GFP_KERNEL);<br />
 	if (!iif) {<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 <br />
 	if (snprintf(iif-&gt;id, sizeof iif-&gt;id, &quot;%s_%u&quot;, isdnid, cs-&gt;minor_index)<br />
 	    &gt;= sizeof iif-&gt;id) {<br />
 		pr_err(&quot;ID too long: %s\n&quot;, isdnid);<br />
 		kfree(iif);<br />
-		return 0;<br />
+		return -EINVAL;<br />
 	}<br />
 <br />
 	iif-&gt;owner = THIS_MODULE;<br />
@@ -656,13 +656,13 @@ int gigaset_isdn_regdev(struct cardstate *cs, const char *isdnid)<br />
 	if (!register_isdn(iif)) {<br />
 		pr_err(&quot;register_isdn failed\n&quot;);<br />
 		kfree(iif);<br />
-		return 0;<br />
+		return -EINVAL;<br />
 	}<br />
 <br />
 	cs-&gt;iif = iif;<br />
 	cs-&gt;myid = iif-&gt;channels;		/* Set my device id */<br />
 	cs-&gt;hw_hdr_len = HW_HDR_LEN;<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /**<br />
diff --git a/drivers/isdn/gigaset/isocdata.c b/drivers/isdn/gigaset/isocdata.c<br />
index a351c16..bc29f1d 100644<br />
--- a/drivers/isdn/gigaset/isocdata.c<br />
+++ b/drivers/isdn/gigaset/isocdata.c<br />
@@ -56,7 +56,7 @@ static inline int isowbuf_freebytes(struct isowbuf_t *iwb)<br />
 <br />
 /* start writing<br />
  * acquire the write semaphore<br />
- * return true if acquired, false if busy<br />
+ * return 0 if acquired, &lt;0 if busy<br />
  */<br />
 static inline int isowbuf_startwrite(struct isowbuf_t *iwb)<br />
 {<br />
@@ -64,12 +64,12 @@ static inline int isowbuf_startwrite(struct isowbuf_t *iwb)<br />
 		atomic_inc(&amp;iwb-&gt;writesem);<br />
 		gig_dbg(DEBUG_ISO, &quot;%s: couldn't acquire iso write semaphore&quot;,<br />
 			__func__);<br />
-		return 0;<br />
+		return -EBUSY;<br />
 	}<br />
 	gig_dbg(DEBUG_ISO,<br />
 		&quot;%s: acquired iso write semaphore, data[write]=%02x, nbits=%d&quot;,<br />
 		__func__, iwb-&gt;data[iwb-&gt;write], iwb-&gt;wbits);<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /* finish writing<br />
@@ -158,7 +158,7 @@ int gigaset_isowbuf_getbytes(struct isowbuf_t *iwb, int size)<br />
 		/* no wraparound in valid data */<br />
 		if (limit &gt;= write) {<br />
 			/* append idle frame */<br />
-			if (!isowbuf_startwrite(iwb))<br />
+			if (isowbuf_startwrite(iwb) &lt; 0)<br />
 				return -EBUSY;<br />
 			/* write position could have changed */<br />
 			write = iwb-&gt;write;<br />
@@ -403,7 +403,7 @@ static inline int hdlc_buildframe(struct isowbuf_t *iwb,<br />
 	unsigned char c;<br />
 <br />
 	if (isowbuf_freebytes(iwb) &lt; count + count / 5 + 6 ||<br />
-	    !isowbuf_startwrite(iwb)) {<br />
+	    isowbuf_startwrite(iwb) &lt; 0) {<br />
 		gig_dbg(DEBUG_ISO, &quot;%s: %d bytes free -&gt; -EAGAIN&quot;,<br />
 			__func__, isowbuf_freebytes(iwb));<br />
 		return -EAGAIN;<br />
@@ -457,7 +457,7 @@ static inline int trans_buildframe(struct isowbuf_t *iwb,<br />
 		return iwb-&gt;write;<br />
 <br />
 	if (isowbuf_freebytes(iwb) &lt; count ||<br />
-	    !isowbuf_startwrite(iwb)) {<br />
+	    isowbuf_startwrite(iwb) &lt; 0) {<br />
 		gig_dbg(DEBUG_ISO, &quot;can't put %d bytes&quot;, count);<br />
 		return -EAGAIN;<br />
 	}<br />
diff --git a/drivers/isdn/gigaset/ser-gigaset.c b/drivers/isdn/gigaset/ser-gigaset.c<br />
index 6f3fd4c..8c91fd5 100644<br />
--- a/drivers/isdn/gigaset/ser-gigaset.c<br />
+++ b/drivers/isdn/gigaset/ser-gigaset.c<br />
@@ -340,17 +340,16 @@ static int gigaset_initbcshw(struct bc_state *bcs)<br />
 {<br />
 	/* unused */<br />
 	bcs-&gt;hw.ser = NULL;<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /*<br />
  * Free B channel structure<br />
  * Called by &quot;gigaset_freebcs&quot; in common.c<br />
  */<br />
-static int gigaset_freebcshw(struct bc_state *bcs)<br />
+static void gigaset_freebcshw(struct bc_state *bcs)<br />
 {<br />
 	/* unused */<br />
-	return 1;<br />
 }<br />
 <br />
 /*<br />
@@ -398,7 +397,7 @@ static int gigaset_initcshw(struct cardstate *cs)<br />
 	scs = kzalloc(sizeof(struct ser_cardstate), GFP_KERNEL);<br />
 	if (!scs) {<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 	cs-&gt;hw.ser = scs;<br />
 <br />
@@ -410,13 +409,13 @@ static int gigaset_initcshw(struct cardstate *cs)<br />
 		pr_err(&quot;error %d registering platform device\n&quot;, rc);<br />
 		kfree(cs-&gt;hw.ser);<br />
 		cs-&gt;hw.ser = NULL;<br />
-		return 0;<br />
+		return rc;<br />
 	}<br />
 	dev_set_drvdata(&amp;cs-&gt;hw.ser-&gt;dev.dev, cs);<br />
 <br />
 	tasklet_init(&amp;cs-&gt;write_tasklet,<br />
 		     gigaset_modem_fill, (unsigned long) cs);<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /*<br />
@@ -503,6 +502,7 @@ static int<br />
 gigaset_tty_open(struct tty_struct *tty)<br />
 {<br />
 	struct cardstate *cs;<br />
+	int rc;<br />
 <br />
 	gig_dbg(DEBUG_INIT, &quot;Starting HLL for Gigaset M101&quot;);<br />
 <br />
@@ -515,8 +515,10 @@ gigaset_tty_open(struct tty_struct *tty)<br />
 <br />
 	/* allocate memory for our device state and initialize it */<br />
 	cs = gigaset_initcs(driver, 1, 1, 0, cidmode, GIGASET_MODULENAME);<br />
-	if (!cs)<br />
+	if (!cs) {<br />
+		rc = -ENODEV;<br />
 		goto error;<br />
+	}<br />
 <br />
 	cs-&gt;dev = &amp;cs-&gt;hw.ser-&gt;dev.dev;<br />
 	cs-&gt;hw.ser-&gt;tty = tty;<br />
@@ -530,7 +532,8 @@ gigaset_tty_open(struct tty_struct *tty)<br />
 	 */<br />
 	if (startmode == SM_LOCKED)<br />
 		cs-&gt;mstate = MS_LOCKED;<br />
-	if (!gigaset_start(cs)) {<br />
+	rc = gigaset_start(cs);<br />
+	if (rc &lt; 0) {<br />
 		tasklet_kill(&amp;cs-&gt;write_tasklet);<br />
 		goto error;<br />
 	}<br />
@@ -542,7 +545,7 @@ error:<br />
 	gig_dbg(DEBUG_INIT, &quot;Startup of HLL failed&quot;);<br />
 	tty-&gt;disc_data = NULL;<br />
 	gigaset_freecs(cs);<br />
-	return -ENODEV;<br />
+	return rc;<br />
 }<br />
 <br />
 /*<br />
diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c<br />
index 049da67..bb12d80 100644<br />
--- a/drivers/isdn/gigaset/usb-gigaset.c<br />
+++ b/drivers/isdn/gigaset/usb-gigaset.c<br />
@@ -549,10 +549,9 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])<br />
 			       0, 0, &amp;buf, 6, 2000);<br />
 }<br />
 <br />
-static int gigaset_freebcshw(struct bc_state *bcs)<br />
+static void gigaset_freebcshw(struct bc_state *bcs)<br />
 {<br />
 	/* unused */<br />
-	return 1;<br />
 }<br />
 <br />
 /* Initialize the b-channel structure */<br />
@@ -560,7 +559,7 @@ static int gigaset_initbcshw(struct bc_state *bcs)<br />
 {<br />
 	/* unused */<br />
 	bcs-&gt;hw.usb = NULL;<br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 static void gigaset_reinitbcshw(struct bc_state *bcs)<br />
@@ -582,7 +581,7 @@ static int gigaset_initcshw(struct cardstate *cs)<br />
 		kmalloc(sizeof(struct usb_cardstate), GFP_KERNEL);<br />
 	if (!ucs) {<br />
 		pr_err(&quot;out of memory\n&quot;);<br />
-		return 0;<br />
+		return -ENOMEM;<br />
 	}<br />
 <br />
 	ucs-&gt;bchars[0] = 0;<br />
@@ -597,7 +596,7 @@ static int gigaset_initcshw(struct cardstate *cs)<br />
 	tasklet_init(&amp;cs-&gt;write_tasklet,<br />
 		     gigaset_modem_fill, (unsigned long) cs);<br />
 <br />
-	return 1;<br />
+	return 0;<br />
 }<br />
 <br />
 /* Send data from current skb to the device. */<br />
@@ -766,9 +765,9 @@ static int gigaset_probe(struct usb_interface *interface,<br />
 	if (startmode == SM_LOCKED)<br />
 		cs-&gt;mstate = MS_LOCKED;<br />
 <br />
-	if (!gigaset_start(cs)) {<br />
+	retval = gigaset_start(cs);<br />
+	if (retval &lt; 0) {<br />
 		tasklet_kill(&amp;cs-&gt;write_tasklet);<br />
-		retval = -ENODEV;<br />
 		goto error;<br />
 	}<br />
 	return 0;<br />
@@ -898,8 +897,10 @@ static int __init usb_gigaset_init(void)<br />
 	driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS,<br />
 				    GIGASET_MODULENAME, GIGASET_DEVNAME,<br />
 				    &amp;ops, THIS_MODULE);<br />
-	if (driver == NULL)<br />
+	if (driver == NULL) {<br />
+		result = -ENOMEM;<br />
 		goto error;<br />
+	}<br />
 <br />
 	/* register this driver with the USB subsystem */<br />
 	result = usb_register(&amp;gigaset_usb_driver);<br />
@@ -915,7 +916,7 @@ error:<br />
 	if (driver)<br />
 		gigaset_freedriver(driver);<br />
 	driver = NULL;<br />
-	return -1;<br />
+	return result;<br />
 }<br />
 <br />
 /*<br />
-- <br />
1.7.3.4<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a></i></i></i></i>]]></description>
            <dc:creator>Tilman Schmidt</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 26 Apr 2012 01:10:01 +0200</pubDate>
        </item>
    </channel>
</rss>
