netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/5] s390: network patches for net-next
@ 2012-09-24 14:24 frank.blaschka
  2012-09-24 14:24 ` [patch 1/5] [PATCH] qeth: cleanup channel path descriptor function frank.blaschka
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: frank.blaschka @ 2012-09-24 14:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390

Hi Dave,

here are some s390 related patches for net-next

shortlog:

Sebastian Ott(2)
qeth: cleanup channel path descriptor function
lcs: ensure proper ccw setup

Wei Yongjun(1)
qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]()

Peter Senna(2)
drivers/s390/net: removes unnecessary semicolon
ctcm: fix error return code

Thanks,
        Frank

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [patch 1/5] [PATCH] qeth: cleanup channel path descriptor function
  2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
@ 2012-09-24 14:24 ` frank.blaschka
  2012-09-24 14:24 ` [patch 2/5] [PATCH] lcs: ensure proper ccw setup frank.blaschka
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: frank.blaschka @ 2012-09-24 14:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Sebastian Ott, Ursula Braun

[-- Attachment #1: 600-qeth-chp-desc-cleanup.diff --]
[-- Type: text/plain, Size: 3841 bytes --]

From: Sebastian Ott <sebott@linux.vnet.ibm.com>

Cleanup the qeth_get_channel_path_desc function and rename it
to qeth_update_from_chp_desc. No functional change.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Acked-by: Ursula Braun <ursula.braun@de.ibm.com>
---
 drivers/s390/net/qeth_core_main.c |   74 +++++++++++++++++++++-----------------
 1 file changed, 41 insertions(+), 33 deletions(-)

--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -1257,7 +1257,30 @@ static void qeth_clean_channel(struct qe
 		kfree(channel->iob[cnt].data);
 }
 
-static void qeth_get_channel_path_desc(struct qeth_card *card)
+static void qeth_set_single_write_queues(struct qeth_card *card)
+{
+	if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) &&
+	    (card->qdio.no_out_queues == 4))
+		qeth_free_qdio_buffers(card);
+
+	card->qdio.no_out_queues = 1;
+	if (card->qdio.default_out_queue != 0)
+		dev_info(&card->gdev->dev, "Priority Queueing not supported\n");
+
+	card->qdio.default_out_queue = 0;
+}
+
+static void qeth_set_multiple_write_queues(struct qeth_card *card)
+{
+	if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) &&
+	    (card->qdio.no_out_queues == 1)) {
+		qeth_free_qdio_buffers(card);
+		card->qdio.default_out_queue = 2;
+	}
+	card->qdio.no_out_queues = 4;
+}
+
+static void qeth_update_from_chp_desc(struct qeth_card *card)
 {
 	struct ccw_device *ccwdev;
 	struct channelPath_dsc {
@@ -1274,38 +1297,23 @@ static void qeth_get_channel_path_desc(s
 	QETH_DBF_TEXT(SETUP, 2, "chp_desc");
 
 	ccwdev = card->data.ccwdev;
-	chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0);
-	if (chp_dsc != NULL) {
-		if (card->info.type != QETH_CARD_TYPE_IQD) {
-			/* CHPP field bit 6 == 1 -> single queue */
-			if ((chp_dsc->chpp & 0x02) == 0x02) {
-				if ((atomic_read(&card->qdio.state) !=
-					QETH_QDIO_UNINITIALIZED) &&
-				    (card->qdio.no_out_queues == 4))
-					/* change from 4 to 1 outbound queues */
-					qeth_free_qdio_buffers(card);
-				card->qdio.no_out_queues = 1;
-				if (card->qdio.default_out_queue != 0)
-					dev_info(&card->gdev->dev,
-					"Priority Queueing not supported\n");
-				card->qdio.default_out_queue = 0;
-			} else {
-				if ((atomic_read(&card->qdio.state) !=
-					QETH_QDIO_UNINITIALIZED) &&
-				    (card->qdio.no_out_queues == 1)) {
-					/* change from 1 to 4 outbound queues */
-					qeth_free_qdio_buffers(card);
-					card->qdio.default_out_queue = 2;
-				}
-				card->qdio.no_out_queues = 4;
-			}
-		}
-		card->info.func_level = 0x4100 + chp_dsc->desc;
-		kfree(chp_dsc);
-	}
+	chp_dsc = ccw_device_get_chp_desc(ccwdev, 0);
+	if (!chp_dsc)
+		goto out;
+
+	card->info.func_level = 0x4100 + chp_dsc->desc;
+	if (card->info.type == QETH_CARD_TYPE_IQD)
+		goto out;
+
+	/* CHPP field bit 6 == 1 -> single queue */
+	if ((chp_dsc->chpp & 0x02) == 0x02)
+		qeth_set_single_write_queues(card);
+	else
+		qeth_set_multiple_write_queues(card);
+out:
+	kfree(chp_dsc);
 	QETH_DBF_TEXT_(SETUP, 2, "nr:%x", card->qdio.no_out_queues);
 	QETH_DBF_TEXT_(SETUP, 2, "lvl:%02x", card->info.func_level);
-	return;
 }
 
 static void qeth_init_qdio_info(struct qeth_card *card)
@@ -1473,7 +1481,7 @@ static int qeth_determine_card_type(stru
 			card->qdio.no_in_queues = 1;
 			card->info.is_multicast_different =
 				known_devices[i][QETH_MULTICAST_IND];
-			qeth_get_channel_path_desc(card);
+			qeth_update_from_chp_desc(card);
 			return 0;
 		}
 		i++;
@@ -4742,7 +4750,7 @@ int qeth_core_hardsetup_card(struct qeth
 
 	QETH_DBF_TEXT(SETUP, 2, "hrdsetup");
 	atomic_set(&card->force_alloc_skb, 0);
-	qeth_get_channel_path_desc(card);
+	qeth_update_from_chp_desc(card);
 retry:
 	if (retries)
 		QETH_DBF_MESSAGE(2, "%s Retrying to do IDX activates.\n",

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [patch 2/5] [PATCH] lcs: ensure proper ccw setup
  2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
  2012-09-24 14:24 ` [patch 1/5] [PATCH] qeth: cleanup channel path descriptor function frank.blaschka
@ 2012-09-24 14:24 ` frank.blaschka
  2012-09-24 14:24 ` [patch 3/5] [PATCH] qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]() frank.blaschka
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: frank.blaschka @ 2012-09-24 14:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Sebastian Ott

[-- Attachment #1: 601-lcs-ccw-memset.diff --]
[-- Type: text/plain, Size: 980 bytes --]

From: Sebastian Ott <sebott@linux.vnet.ibm.com>

Make sure that all ccws used for writing are initialized with
zeros - especially since the last ccw contains a TIC for which
the unused fields have to be zeros.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---
 drivers/s390/net/lcs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index a3adf4b..2ca0f1d 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -282,7 +282,7 @@ lcs_setup_write_ccws(struct lcs_card *card)
 
 	LCS_DBF_TEXT(3, setup, "iwritccw");
 	/* Setup write ccws. */
-	memset(card->write.ccws, 0, sizeof(struct ccw1) * LCS_NUM_BUFFS + 1);
+	memset(card->write.ccws, 0, sizeof(struct ccw1) * (LCS_NUM_BUFFS + 1));
 	for (cnt = 0; cnt < LCS_NUM_BUFFS; cnt++) {
 		card->write.ccws[cnt].cmd_code = LCS_CCW_WRITE;
 		card->write.ccws[cnt].count = 0;
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [patch 3/5] [PATCH] qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]()
  2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
  2012-09-24 14:24 ` [patch 1/5] [PATCH] qeth: cleanup channel path descriptor function frank.blaschka
  2012-09-24 14:24 ` [patch 2/5] [PATCH] lcs: ensure proper ccw setup frank.blaschka
@ 2012-09-24 14:24 ` frank.blaschka
  2012-09-24 14:24 ` [patch 4/5] [PATCH] drivers/s390/net: removes unnecessary semicolon frank.blaschka
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: frank.blaschka @ 2012-09-24 14:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Wei Yongjun

[-- Attachment #1: 602-qeth-memory-leak-l3.diff --]
[-- Type: text/plain, Size: 1211 bytes --]

From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

ipaddr has been allocated in function qeth_l3_add_vipa() but
does not free before leaving from the error handling cases. The
same problem also exists in function qeth_l3_add_rxip().

spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---
 drivers/s390/net/qeth_l3_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index c5f03fa..4cd310c 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -794,6 +794,7 @@ int qeth_l3_add_vipa(struct qeth_card *card, enum qeth_prot_versions proto,
 		rc = -EEXIST;
 	spin_unlock_irqrestore(&card->ip_lock, flags);
 	if (rc) {
+		kfree(ipaddr);
 		return rc;
 	}
 	if (!qeth_l3_add_ip(card, ipaddr))
@@ -858,6 +859,7 @@ int qeth_l3_add_rxip(struct qeth_card *card, enum qeth_prot_versions proto,
 		rc = -EEXIST;
 	spin_unlock_irqrestore(&card->ip_lock, flags);
 	if (rc) {
+		kfree(ipaddr);
 		return rc;
 	}
 	if (!qeth_l3_add_ip(card, ipaddr))
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [patch 4/5] [PATCH] drivers/s390/net: removes unnecessary semicolon
  2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
                   ` (2 preceding siblings ...)
  2012-09-24 14:24 ` [patch 3/5] [PATCH] qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]() frank.blaschka
@ 2012-09-24 14:24 ` frank.blaschka
  2012-09-24 14:24 ` [patch 5/5] [PATCH] ctcm: fix error return code frank.blaschka
  2012-09-24 19:47 ` [patch 0/5] s390: network patches for net-next David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: frank.blaschka @ 2012-09-24 14:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Peter Senna Tschudin, Ursula Braun

[-- Attachment #1: 603-net-semicolon-cleanup.diff --]
[-- Type: text/plain, Size: 1485 bytes --]

From: Peter Senna Tschudin <peter.senna@gmail.com>

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---
 drivers/s390/net/ctcm_fsms.c      | 2 +-
 drivers/s390/net/qeth_core_main.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c
index d4ade9e..fb92524 100644
--- a/drivers/s390/net/ctcm_fsms.c
+++ b/drivers/s390/net/ctcm_fsms.c
@@ -1523,7 +1523,7 @@ static void ctcmpc_chx_firstio(fsm_instance *fi, int event, void *arg)
 				goto done;
 	default:
 		break;
-	};
+	}
 
 	fsm_newstate(fi, (CHANNEL_DIRECTION(ch->flags) == CTCM_READ)
 		     ? CTC_STATE_RXINIT : CTC_STATE_TXINIT);
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 3420abf..3e25d31 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -489,7 +489,7 @@ static struct qeth_reply *qeth_alloc_reply(struct qeth_card *card)
 		atomic_set(&reply->refcnt, 1);
 		atomic_set(&reply->received, 0);
 		reply->card = card;
-	};
+	}
 	return reply;
 }
 
@@ -2037,7 +2037,7 @@ int qeth_send_control_data(struct qeth_card *card, int len,
 			if (time_after(jiffies, timeout))
 				goto time_err;
 			cpu_relax();
-		};
+		}
 	}
 
 	if (reply->rc == -EIO)
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [patch 5/5] [PATCH] ctcm: fix error return code
  2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
                   ` (3 preceding siblings ...)
  2012-09-24 14:24 ` [patch 4/5] [PATCH] drivers/s390/net: removes unnecessary semicolon frank.blaschka
@ 2012-09-24 14:24 ` frank.blaschka
  2012-09-24 19:47 ` [patch 0/5] s390: network patches for net-next David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: frank.blaschka @ 2012-09-24 14:24 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Peter Senna Tschudin, Ursula Braun

[-- Attachment #1: 604-ctcm-return-code.diff --]
[-- Type: text/plain, Size: 1154 bytes --]

From: Peter Senna Tschudin <peter.senna@gmail.com>

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---
 drivers/s390/net/ctcm_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/s390/net/ctcm_main.c b/drivers/s390/net/ctcm_main.c
index 5227e57..98ea9cc 100644
--- a/drivers/s390/net/ctcm_main.c
+++ b/drivers/s390/net/ctcm_main.c
@@ -1454,7 +1454,7 @@ static int add_channel(struct ccw_device *cdev, enum ctcm_channel_types type,
 				ch_fsm_len, GFP_KERNEL);
 	}
 	if (ch->fsm == NULL)
-				goto free_return;
+				goto nomem_return;
 
 	fsm_newstate(ch->fsm, CTC_STATE_IDLE);
 
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [patch 0/5] s390: network patches for net-next
  2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
                   ` (4 preceding siblings ...)
  2012-09-24 14:24 ` [patch 5/5] [PATCH] ctcm: fix error return code frank.blaschka
@ 2012-09-24 19:47 ` David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2012-09-24 19:47 UTC (permalink / raw)
  To: frank.blaschka; +Cc: netdev, linux-s390

From: frank.blaschka@de.ibm.com
Date: Mon, 24 Sep 2012 16:24:22 +0200

> here are some s390 related patches for net-next
> 
> shortlog:
> 
> Sebastian Ott(2)
> qeth: cleanup channel path descriptor function
> lcs: ensure proper ccw setup
> 
> Wei Yongjun(1)
> qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]()
> 
> Peter Senna(2)
> drivers/s390/net: removes unnecessary semicolon
> ctcm: fix error return code

All applied, thanks!

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-09-24 19:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-24 14:24 [patch 0/5] s390: network patches for net-next frank.blaschka
2012-09-24 14:24 ` [patch 1/5] [PATCH] qeth: cleanup channel path descriptor function frank.blaschka
2012-09-24 14:24 ` [patch 2/5] [PATCH] lcs: ensure proper ccw setup frank.blaschka
2012-09-24 14:24 ` [patch 3/5] [PATCH] qeth: fix possible memory leak in qeth_l3_add_[vipa|rxip]() frank.blaschka
2012-09-24 14:24 ` [patch 4/5] [PATCH] drivers/s390/net: removes unnecessary semicolon frank.blaschka
2012-09-24 14:24 ` [patch 5/5] [PATCH] ctcm: fix error return code frank.blaschka
2012-09-24 19:47 ` [patch 0/5] s390: network patches for net-next David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).