Patch "s390/qeth: apply takeover changes when mode is toggled" has been added to the 4.9-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
s390/qeth: apply takeover changes when mode is toggled
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
s390-qeth-apply-takeover-changes-when-mode-is-toggled.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Sun Dec 31 11:13:15 CET 2017
From: Julian Wiedmann <[email protected]>
Date: Wed, 13 Dec 2017 18:56:29 +0100
Subject: s390/qeth: apply takeover changes when mode is toggled
From: Julian Wiedmann <[email protected]>
[ Upstream commit 7fbd9493f0eeae8cef58300505a9ef5c8fce6313 ]
Just as for an explicit enable/disable, toggling the takeover mode also requires that the IP addresses get updated. Otherwise all IPs that were added to the table before the mode-toggle, get registered with the old settings.
--- drivers/s390/net/qeth_core.h | 2 +- drivers/s390/net/qeth_core_main.c | 2 +- drivers/s390/net/qeth_l3_sys.c | 35 +++++++++++++++++------------------ 3 files changed, 19 insertions(+), 20 deletions(-)
drivers/s390/net/qeth_core.h +1 -1
@@ -576,7 +576,7 @@ enum qeth_cq { };struct qeth_ipato { -int enabled; +bool enabled;int invert4;int invert6;struct list_head entries;
drivers/s390/net/qeth_core_main.c +1 -1
@@ -1475,7 +1475,7 @@ static int qeth_setup_card(struct qeth_cqeth_set_intial_options (card);/* IP address takeover */ INIT_LIST_HEAD (&card->ipato.entries); - card->ipato.enabled =0 ; + card->ipato.enabled = false; card->ipato.invert4 =0 ; card->ipato.invert6 =0 ;/* init QDIO stuff */
drivers/s390/net/qeth_l3_sys.c +17 -18
@@ -374,6 +374,7 @@ static ssize_t qeth_l3_dev_ipato_enable_struct qeth_card *card =dev_get_drvdata (dev);struct qeth_ipaddr *addr;int i, rc =0 ; +bool enable;if (!card)return -EINVAL ;
@@ -386,25 +387,23 @@ static ssize_t qeth_l3_dev_ipato_enable_ }if (sysfs_streq (buf,"toggle" )) { - card->ipato.enabled = (card->ipato.enabled)?0 :1 ; - }else if (sysfs_streq (buf,"1" )) { - card->ipato.enabled =1 ; -hash_for_each (card->ip_htable, i, addr, hnode) { -if ((addr->type ==QETH_IP_TYPE_NORMAL ) && -qeth_l3_is_addr_covered_by_ipato (card, addr)) - addr->set_flags |= -QETH_IPA_SETIP_TAKEOVER_FLAG ; - } - }else if (sysfs_streq (buf,"0" )) { - card->ipato.enabled =0 ; -hash_for_each (card->ip_htable, i, addr, hnode) { -if (addr->set_flags & -QETH_IPA_SETIP_TAKEOVER_FLAG ) - addr->set_flags &= - ~QETH_IPA_SETIP_TAKEOVER_FLAG ; - } - }else + enable = !card->ipato.enabled; + }else if (kstrtobool (buf, &enable)) { rc = -EINVAL ; + goto out; + } + +if (card->ipato.enabled == enable) + goto out; + card->ipato.enabled = enable; + +hash_for_each (card->ip_htable, i, addr, hnode) { +if (!enable) + addr->set_flags &= ~QETH_IPA_SETIP_TAKEOVER_FLAG ; +else if (addr->type ==QETH_IP_TYPE_NORMAL && +qeth_l3_is_addr_covered_by_ipato (card, addr)) + addr->set_flags |=QETH_IPA_SETIP_TAKEOVER_FLAG ; + } out:mutex_unlock (&card->conf_mutex);return rc ? rc : count;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/s390-qeth-lock-ip-table-while-applying-takeover-changes.patch queue-4.9/s390-qeth-apply-takeover-changes-when-mode-is-toggled.patch queue-4.9/s390-qeth-update-takeover-ips-after-configuration-change.patch queue-4.9/s390-qeth-don-t-apply-takeover-changes-to-rxip.patch