netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/5] s390: networking patches for linux-next
@ 2009-10-15  8:54 Ursula Braun
  2009-10-15  8:54 ` [patch 1/5] [PATCH] af_iucv: use sk functions to modify sk->sk_ack_backlog Ursula Braun
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Ursula Braun @ 2009-10-15  8:54 UTC (permalink / raw)
  To: davem, netdev, linux-s390; +Cc: schwidefsky, heiko.carstens

Dave,

here are small improvements for net/iucv/ and drivers/s390/net/ .
They apply to linux-next.

Summary:

Hendrik Brueckner (1)
af_iucv: use sk functions to modify sk->sk_ack_backlog

Ursula Braun (1)
af_iucv: remove duplicate sock_set_flag

Klaus-Dieter Wacker (2)
lcs: ODEBUG: object is on stack, but not annotated.
lcs: Recognize return codes of ccw_device_set_online().

Einar Lueck (1)
ctcm: rollback in case of errors

Thanks,
        Ursula

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

* [patch 1/5] [PATCH] af_iucv: use sk functions to modify sk->sk_ack_backlog
  2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
@ 2009-10-15  8:54 ` Ursula Braun
  2009-10-15  8:54 ` [patch 2/5] [PATCH] af_iucv: remove duplicate sock_set_flag Ursula Braun
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ursula Braun @ 2009-10-15  8:54 UTC (permalink / raw)
  To: davem, netdev, linux-s390
  Cc: schwidefsky, heiko.carstens, Hendrik Brueckner, Ursula Braun

[-- Attachment #1: 601-af_iucv-use-sk-fns.diff --]
[-- Type: text/plain, Size: 1187 bytes --]

From: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>

Instead of modifying sk->sk_ack_backlog directly, use respective
socket functions.

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
---

 net/iucv/af_iucv.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux-next-uschi/net/iucv/af_iucv.c
===================================================================
--- linux-next-uschi.orig/net/iucv/af_iucv.c
+++ linux-next-uschi/net/iucv/af_iucv.c
@@ -536,7 +536,7 @@ void iucv_accept_enqueue(struct sock *pa
 	list_add_tail(&iucv_sk(sk)->accept_q, &par->accept_q);
 	spin_unlock_irqrestore(&par->accept_q_lock, flags);
 	iucv_sk(sk)->parent = parent;
-	parent->sk_ack_backlog++;
+	sk_acceptq_added(parent);
 }
 
 void iucv_accept_unlink(struct sock *sk)
@@ -547,7 +547,7 @@ void iucv_accept_unlink(struct sock *sk)
 	spin_lock_irqsave(&par->accept_q_lock, flags);
 	list_del_init(&iucv_sk(sk)->accept_q);
 	spin_unlock_irqrestore(&par->accept_q_lock, flags);
-	iucv_sk(sk)->parent->sk_ack_backlog--;
+	sk_acceptq_removed(iucv_sk(sk)->parent);
 	iucv_sk(sk)->parent = NULL;
 	sock_put(sk);
 }


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

* [patch 2/5] [PATCH] af_iucv: remove duplicate sock_set_flag
  2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
  2009-10-15  8:54 ` [patch 1/5] [PATCH] af_iucv: use sk functions to modify sk->sk_ack_backlog Ursula Braun
@ 2009-10-15  8:54 ` Ursula Braun
  2009-10-15  8:54 ` [patch 3/5] [PATCH] lcs: ODEBUG: object is on stack, but not annotated Ursula Braun
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ursula Braun @ 2009-10-15  8:54 UTC (permalink / raw)
  To: davem, netdev, linux-s390
  Cc: schwidefsky, heiko.carstens, Hendrik Brueckner, Ursula Braun

[-- Attachment #1: 602-af_iucv-fallout.diff --]
[-- Type: text/plain, Size: 735 bytes --]

From: Ursula Braun <ursula.braun@de.ibm.com>

Remove duplicate sock_set_flag(sk, SOCK_ZAPPED) in iucv_sock_close,
which has been overlooked in September-commit
7514bab04e567c9408fe0facbde4277f09d5eb74.

Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>

---

 net/iucv/af_iucv.c |    1 -
 1 file changed, 1 deletion(-)

Index: linux-next-uschi/net/iucv/af_iucv.c
===================================================================
--- linux-next-uschi.orig/net/iucv/af_iucv.c
+++ linux-next-uschi/net/iucv/af_iucv.c
@@ -428,7 +428,6 @@ static void iucv_sock_close(struct sock 
 		break;
 
 	default:
-		sock_set_flag(sk, SOCK_ZAPPED);
 		/* nothing to do here */
 		break;
 	}


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

* [patch 3/5] [PATCH] lcs: ODEBUG: object is on stack, but not annotated.
  2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
  2009-10-15  8:54 ` [patch 1/5] [PATCH] af_iucv: use sk functions to modify sk->sk_ack_backlog Ursula Braun
  2009-10-15  8:54 ` [patch 2/5] [PATCH] af_iucv: remove duplicate sock_set_flag Ursula Braun
@ 2009-10-15  8:54 ` Ursula Braun
  2009-10-15  8:54 ` [patch 4/5] [PATCH] lcs: Recognize return codes of ccw_device_set_online() Ursula Braun
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ursula Braun @ 2009-10-15  8:54 UTC (permalink / raw)
  To: davem, netdev, linux-s390
  Cc: schwidefsky, heiko.carstens, Klaus-Dieter Wacker, Ursula Braun

[-- Attachment #1: 610-lcs-odebug.diff --]
[-- Type: text/plain, Size: 993 bytes --]

From: Klaus-Dieter Wacker <kdwacker@de.ibm.com>

Timer_list structure in lcs_send_lancmd() is allocated on stack. 
Initialization with init_timer() leads to above ODEBUG message.
Instead use init_timer_on_stack() which prevents above msg.

Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
---

 drivers/s390/net/lcs.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff -urpN linux-2.6/drivers/s390/net/lcs.c linux-2.6-patched/drivers/s390/net/lcs.c
--- linux-2.6/drivers/s390/net/lcs.c	2009-10-15 10:19:32.000000000 +0200
+++ linux-2.6-patched/drivers/s390/net/lcs.c	2009-10-15 10:19:51.000000000 +0200
@@ -889,7 +889,7 @@ lcs_send_lancmd(struct lcs_card *card, s
 	rc = lcs_ready_buffer(&card->write, buffer);
 	if (rc)
 		return rc;
-	init_timer(&timer);
+	init_timer_on_stack(&timer);
 	timer.function = lcs_lancmd_timeout;
 	timer.data = (unsigned long) reply;
 	timer.expires = jiffies + HZ*card->lancmd_timeout;


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

* [patch 4/5] [PATCH] lcs: Recognize return codes of ccw_device_set_online().
  2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
                   ` (2 preceding siblings ...)
  2009-10-15  8:54 ` [patch 3/5] [PATCH] lcs: ODEBUG: object is on stack, but not annotated Ursula Braun
@ 2009-10-15  8:54 ` Ursula Braun
  2009-10-15  8:54 ` [patch 5/5] [PATCH] ctcm rollback in case of errors Ursula Braun
  2009-10-18  6:57 ` [patch 0/5] s390: networking patches for linux-next David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: Ursula Braun @ 2009-10-15  8:54 UTC (permalink / raw)
  To: davem, netdev, linux-s390
  Cc: schwidefsky, heiko.carstens, Klaus-Dieter Wacker, Ursula Braun

[-- Attachment #1: 611-lcs-set_online-rc.diff --]
[-- Type: text/plain, Size: 1385 bytes --]

From: Klaus-Dieter Wacker <kdwacker@de.ibm.com>

The creation of a new lcs device requires a call to the function
ccw_device_set_online() for the read and the write channel. Failure
of either call should terminate the lcs device creation immediately
with return code -ENODEV.

Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
---

 drivers/s390/net/lcs.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff -urpN linux-2.6/drivers/s390/net/lcs.c linux-2.6-patched/drivers/s390/net/lcs.c
--- linux-2.6/drivers/s390/net/lcs.c	2009-10-15 10:19:52.000000000 +0200
+++ linux-2.6-patched/drivers/s390/net/lcs.c	2009-10-15 10:19:52.000000000 +0200
@@ -2130,8 +2130,12 @@ lcs_new_device(struct ccwgroup_device *c
 	card->write.ccwdev = ccwgdev->cdev[1];
 
 	recover_state = card->state;
-	ccw_device_set_online(card->read.ccwdev);
-	ccw_device_set_online(card->write.ccwdev);
+	rc = ccw_device_set_online(card->read.ccwdev);
+	if (rc)
+		goto out_err;
+	rc = ccw_device_set_online(card->write.ccwdev);
+	if (rc)
+		goto out_werr;
 
 	LCS_DBF_TEXT(3, setup, "lcsnewdv");
 
@@ -2210,8 +2214,10 @@ netdev_out:
 	return 0;
 out:
 
-	ccw_device_set_offline(card->read.ccwdev);
 	ccw_device_set_offline(card->write.ccwdev);
+out_werr:
+	ccw_device_set_offline(card->read.ccwdev);
+out_err:
 	return -ENODEV;
 }
 


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

* [patch 5/5] [PATCH] ctcm rollback in case of errors
  2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
                   ` (3 preceding siblings ...)
  2009-10-15  8:54 ` [patch 4/5] [PATCH] lcs: Recognize return codes of ccw_device_set_online() Ursula Braun
@ 2009-10-15  8:54 ` Ursula Braun
  2009-10-18  6:57 ` [patch 0/5] s390: networking patches for linux-next David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: Ursula Braun @ 2009-10-15  8:54 UTC (permalink / raw)
  To: davem, netdev, linux-s390
  Cc: schwidefsky, heiko.carstens, Einar Lueck, Ursula Braun

[-- Attachment #1: 612-ctcm-error-rollback.diff --]
[-- Type: text/plain, Size: 3211 bytes --]

From: Einar Lueck <elelueck@de.ibm.com>

Group device now cleanly reacts to failures during channel start and
implements a clean rollback.

Signed-off-by: Einar Lueck <elelueck@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
---

 drivers/s390/net/ctcm_main.c |   59 ++++++++++++++++++++++++++++++-------------
 1 file changed, 42 insertions(+), 17 deletions(-)

diff -urpN linux-2.6/drivers/s390/net/ctcm_main.c linux-2.6-patched/drivers/s390/net/ctcm_main.c
--- linux-2.6/drivers/s390/net/ctcm_main.c	2009-10-15 10:19:32.000000000 +0200
+++ linux-2.6-patched/drivers/s390/net/ctcm_main.c	2009-10-15 10:19:52.000000000 +0200
@@ -1530,11 +1530,16 @@ static int ctcm_new_device(struct ccwgro
 	struct net_device *dev;
 	struct ccw_device *cdev0;
 	struct ccw_device *cdev1;
+	struct channel *readc;
+	struct channel *writec;
 	int ret;
+	int result;
 
 	priv = dev_get_drvdata(&cgdev->dev);
-	if (!priv)
-		return -ENODEV;
+	if (!priv) {
+		result = -ENODEV;
+		goto out_err_result;
+	}
 
 	cdev0 = cgdev->cdev[0];
 	cdev1 = cgdev->cdev[1];
@@ -1545,31 +1550,40 @@ static int ctcm_new_device(struct ccwgro
 	snprintf(write_id, CTCM_ID_SIZE, "ch-%s", dev_name(&cdev1->dev));
 
 	ret = add_channel(cdev0, type, priv);
-	if (ret)
-		return ret;
+	if (ret) {
+		result = ret;
+		goto out_err_result;
+	}
 	ret = add_channel(cdev1, type, priv);
-	if (ret)
-		return ret;
+	if (ret) {
+		result = ret;
+		goto out_remove_channel1;
+	}
 
 	ret = ccw_device_set_online(cdev0);
 	if (ret != 0) {
-		/* may be ok to fail now - can be done later */
 		CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE,
 			"%s(%s) set_online rc=%d",
 				CTCM_FUNTAIL, read_id, ret);
+		result = -EIO;
+		goto out_remove_channel2;
 	}
 
 	ret = ccw_device_set_online(cdev1);
 	if (ret != 0) {
-		/* may be ok to fail now - can be done later */
 		CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE,
 			"%s(%s) set_online rc=%d",
 				CTCM_FUNTAIL, write_id, ret);
+
+		result = -EIO;
+		goto out_ccw1;
 	}
 
 	dev = ctcm_init_netdevice(priv);
-	if (dev == NULL)
-			goto out;
+	if (dev == NULL) {
+		result = -ENODEV;
+		goto out_ccw2;
+	}
 
 	for (direction = READ; direction <= WRITE; direction++) {
 		priv->channel[direction] =
@@ -1587,12 +1601,14 @@ static int ctcm_new_device(struct ccwgro
 	/* sysfs magic */
 	SET_NETDEV_DEV(dev, &cgdev->dev);
 
-	if (register_netdev(dev))
-			goto out_dev;
+	if (register_netdev(dev)) {
+		result = -ENODEV;
+		goto out_dev;
+	}
 
 	if (ctcm_add_attributes(&cgdev->dev)) {
-		unregister_netdev(dev);
-			goto out_dev;
+		result = -ENODEV;
+		goto out_unregister;
 	}
 
 	strlcpy(priv->fsm->name, dev->name, sizeof(priv->fsm->name));
@@ -1608,13 +1624,22 @@ static int ctcm_new_device(struct ccwgro
 			priv->channel[WRITE]->id, priv->protocol);
 
 	return 0;
+out_unregister:
+	unregister_netdev(dev);
 out_dev:
 	ctcm_free_netdevice(dev);
-out:
+out_ccw2:
 	ccw_device_set_offline(cgdev->cdev[1]);
+out_ccw1:
 	ccw_device_set_offline(cgdev->cdev[0]);
-
-	return -ENODEV;
+out_remove_channel2:
+	readc = channel_get(type, read_id, READ);
+	channel_remove(readc);
+out_remove_channel1:
+	writec = channel_get(type, write_id, WRITE);
+	channel_remove(writec);
+out_err_result:
+	return result;
 }
 
 /**


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

* Re: [patch 0/5] s390: networking patches for linux-next
  2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
                   ` (4 preceding siblings ...)
  2009-10-15  8:54 ` [patch 5/5] [PATCH] ctcm rollback in case of errors Ursula Braun
@ 2009-10-18  6:57 ` David Miller
  5 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2009-10-18  6:57 UTC (permalink / raw)
  To: ursula.braun; +Cc: netdev, linux-s390, schwidefsky, heiko.carstens

From: Ursula Braun <ursula.braun@de.ibm.com>
Date: Thu, 15 Oct 2009 10:54:54 +0200

> here are small improvements for net/iucv/ and drivers/s390/net/ .
> They apply to linux-next.

All applied, thanks.

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

end of thread, other threads:[~2009-10-18  6:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-15  8:54 [patch 0/5] s390: networking patches for linux-next Ursula Braun
2009-10-15  8:54 ` [patch 1/5] [PATCH] af_iucv: use sk functions to modify sk->sk_ack_backlog Ursula Braun
2009-10-15  8:54 ` [patch 2/5] [PATCH] af_iucv: remove duplicate sock_set_flag Ursula Braun
2009-10-15  8:54 ` [patch 3/5] [PATCH] lcs: ODEBUG: object is on stack, but not annotated Ursula Braun
2009-10-15  8:54 ` [patch 4/5] [PATCH] lcs: Recognize return codes of ccw_device_set_online() Ursula Braun
2009-10-15  8:54 ` [patch 5/5] [PATCH] ctcm rollback in case of errors Ursula Braun
2009-10-18  6:57 ` [patch 0/5] s390: networking patches for linux-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).