diff options
author | Tilman Schmidt <tilman@imap.cc> | 2010-03-14 08:58:05 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-15 19:00:49 -0400 |
commit | 3a0a3a6b92edf181f849ebd8417122392ba73a96 (patch) | |
tree | 9cbaea368c2a5e90fcf0e2c1c45510da7bfa3cc1 /drivers/isdn | |
parent | bc35b4e347c047fb1c665bb761ddb22482539f7f (diff) |
gigaset: correct clearing of at_state strings on RING
In RING handling, clear the table of received parameter strings in
a loop like everywhere else, instead of by enumeration which had
already gotten out of sync.
Impact: minor bugfix
Signed-off-by: Tilman Schmidt <tilman@imap.cc>
Acked-by: Karsten Keil <keil@b1-systems.de>
CC: stable@kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/gigaset/ev-layer.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c index c8f89b78b233..206c380c5235 100644 --- a/drivers/isdn/gigaset/ev-layer.c +++ b/drivers/isdn/gigaset/ev-layer.c | |||
@@ -1258,14 +1258,10 @@ static void do_action(int action, struct cardstate *cs, | |||
1258 | * note that bcs may be NULL if no B channel is free | 1258 | * note that bcs may be NULL if no B channel is free |
1259 | */ | 1259 | */ |
1260 | at_state2->ConState = 700; | 1260 | at_state2->ConState = 700; |
1261 | kfree(at_state2->str_var[STR_NMBR]); | 1261 | for (i = 0; i < STR_NUM; ++i) { |
1262 | at_state2->str_var[STR_NMBR] = NULL; | 1262 | kfree(at_state2->str_var[i]); |
1263 | kfree(at_state2->str_var[STR_ZCPN]); | 1263 | at_state2->str_var[i] = NULL; |
1264 | at_state2->str_var[STR_ZCPN] = NULL; | 1264 | } |
1265 | kfree(at_state2->str_var[STR_ZBC]); | ||
1266 | at_state2->str_var[STR_ZBC] = NULL; | ||
1267 | kfree(at_state2->str_var[STR_ZHLC]); | ||
1268 | at_state2->str_var[STR_ZHLC] = NULL; | ||
1269 | at_state2->int_var[VAR_ZCTP] = -1; | 1265 | at_state2->int_var[VAR_ZCTP] = -1; |
1270 | 1266 | ||
1271 | spin_lock_irqsave(&cs->lock, flags); | 1267 | spin_lock_irqsave(&cs->lock, flags); |