.. | .. |
---|
50 | 50 | #include <linux/netdevice.h> |
---|
51 | 51 | #include <linux/etherdevice.h> |
---|
52 | 52 | #include <linux/gsmmux.h> |
---|
| 53 | +#include "tty.h" |
---|
53 | 54 | |
---|
54 | 55 | static int debug; |
---|
55 | 56 | module_param(debug, int, 0600); |
---|
.. | .. |
---|
2158 | 2159 | static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc) |
---|
2159 | 2160 | { |
---|
2160 | 2161 | int i; |
---|
2161 | | - struct gsm_dlci *dlci = gsm->dlci[0]; |
---|
| 2162 | + struct gsm_dlci *dlci; |
---|
2162 | 2163 | struct gsm_msg *txq, *ntxq; |
---|
2163 | 2164 | |
---|
2164 | 2165 | gsm->dead = true; |
---|
2165 | 2166 | mutex_lock(&gsm->mutex); |
---|
2166 | 2167 | |
---|
| 2168 | + dlci = gsm->dlci[0]; |
---|
2167 | 2169 | if (dlci) { |
---|
2168 | 2170 | if (disc && dlci->state != DLCI_CLOSED) { |
---|
2169 | 2171 | gsm_dlci_begin_close(dlci); |
---|
.. | .. |
---|
2177 | 2179 | |
---|
2178 | 2180 | /* Free up any link layer users and finally the control channel */ |
---|
2179 | 2181 | for (i = NUM_DLCI - 1; i >= 0; i--) |
---|
2180 | | - if (gsm->dlci[i]) |
---|
| 2182 | + if (gsm->dlci[i]) { |
---|
2181 | 2183 | gsm_dlci_release(gsm->dlci[i]); |
---|
| 2184 | + gsm->dlci[i] = NULL; |
---|
| 2185 | + } |
---|
2182 | 2186 | mutex_unlock(&gsm->mutex); |
---|
2183 | 2187 | /* Now wipe the queues */ |
---|
2184 | 2188 | tty_ldisc_flush(gsm->tty); |
---|