X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=drivers%2Fisdn%2FmISDN%2Flayer2.c;h=9ff0903a0e89fb2f4f7373e1ef4d1d1663934b36;hb=47b59d8e40850a05370ee9198ea5e505d89489f1;hp=7243a6746f8b099d79d3221def6dcfcf138a6f51;hpb=2f9227c79874fef0f8b974cf7701f5a8ad2bb6bf;p=sfrench%2Fcifs-2.6.git diff --git a/drivers/isdn/mISDN/layer2.c b/drivers/isdn/mISDN/layer2.c index 7243a6746f8b..9ff0903a0e89 100644 --- a/drivers/isdn/mISDN/layer2.c +++ b/drivers/isdn/mISDN/layer2.c @@ -2247,15 +2247,26 @@ static struct Bprotocol X75SLP = { int Isdnl2_Init(u_int *deb) { + int res; debug = deb; mISDN_register_Bprotocol(&X75SLP); l2fsm.state_count = L2_STATE_COUNT; l2fsm.event_count = L2_EVENT_COUNT; l2fsm.strEvent = strL2Event; l2fsm.strState = strL2State; - mISDN_FsmNew(&l2fsm, L2FnList, ARRAY_SIZE(L2FnList)); - TEIInit(deb); + res = mISDN_FsmNew(&l2fsm, L2FnList, ARRAY_SIZE(L2FnList)); + if (res) + goto error; + res = TEIInit(deb); + if (res) + goto error_fsm; return 0; + +error_fsm: + mISDN_FsmFree(&l2fsm); +error: + mISDN_unregister_Bprotocol(&X75SLP); + return res; } void