char *in, *out;
 
        if (!list_empty(chans)) {
+               line->chan_in = line->chan_out = NULL;
                free_chan(chans);
                INIT_LIST_HEAD(chans);
        }
 
                new->input = 1;
                list_add(&new->list, chans);
+               line->chan_in = new;
 
                new = parse_chan(line, out, device, opts, error_out);
                if (new == NULL)
 
                list_add(&new->list, chans);
                new->output = 1;
+               line->chan_out = new;
        }
        else {
                new = parse_chan(line, str, device, opts, error_out);
                list_add(&new->list, chans);
                new->input = 1;
                new->output = 1;
+               line->chan_in = line->chan_out = new;
        }
        return 0;
 }
 
 
        char *init_str;
        struct list_head chan_list;
+       struct chan *chan_in, *chan_out;
 
        /*This lock is actually, mostly, local to*/
        spinlock_t lock;