llc2: Fix silent failure of llc_station_init()
llc_station_init() creates and processes an event skb with no effect other than to change the state from DOWN to UP. Allocation failure is reported, but then ignored by its caller, llc2_init(). Remove this possibility by simply initialising the state as UP. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4855d6f311
commit
6024935f5f
|
@ -133,7 +133,7 @@ extern int llc_build_and_send_ui_pkt(struct llc_sap *sap, struct sk_buff *skb,
|
|||
extern void llc_sap_handler(struct llc_sap *sap, struct sk_buff *skb);
|
||||
extern void llc_conn_handler(struct llc_sap *sap, struct sk_buff *skb);
|
||||
|
||||
extern int llc_station_init(void);
|
||||
extern void llc_station_init(void);
|
||||
extern void llc_station_exit(void);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
|
|
@ -687,12 +687,8 @@ static void llc_station_rcv(struct sk_buff *skb)
|
|||
llc_station_state_process(skb);
|
||||
}
|
||||
|
||||
int __init llc_station_init(void)
|
||||
void __init llc_station_init(void)
|
||||
{
|
||||
int rc = -ENOBUFS;
|
||||
struct sk_buff *skb;
|
||||
struct llc_station_state_ev *ev;
|
||||
|
||||
skb_queue_head_init(&llc_main_station.mac_pdu_q);
|
||||
skb_queue_head_init(&llc_main_station.ev_q.list);
|
||||
spin_lock_init(&llc_main_station.ev_q.lock);
|
||||
|
@ -700,20 +696,9 @@ int __init llc_station_init(void)
|
|||
(unsigned long)&llc_main_station);
|
||||
llc_main_station.ack_timer.expires = jiffies +
|
||||
sysctl_llc_station_ack_timeout;
|
||||
skb = alloc_skb(0, GFP_ATOMIC);
|
||||
if (!skb)
|
||||
goto out;
|
||||
rc = 0;
|
||||
llc_set_station_handler(llc_station_rcv);
|
||||
ev = llc_station_ev(skb);
|
||||
memset(ev, 0, sizeof(*ev));
|
||||
llc_main_station.maximum_retry = 1;
|
||||
llc_main_station.state = LLC_STATION_STATE_DOWN;
|
||||
ev->type = LLC_STATION_EV_TYPE_SIMPLE;
|
||||
ev->prim_type = LLC_STATION_EV_ENABLE_WITHOUT_DUP_ADDR_CHECK;
|
||||
rc = llc_station_next_state(skb);
|
||||
out:
|
||||
return rc;
|
||||
llc_main_station.state = LLC_STATION_STATE_UP;
|
||||
}
|
||||
|
||||
void __exit llc_station_exit(void)
|
||||
|
|
Loading…
Reference in New Issue