From de4772aef38a4cba6e163913e92b2c874274b863 Mon Sep 17 00:00:00 2001 From: Sudip Mukherjee Date: Thu, 17 Sep 2015 22:14:33 +0530 Subject: [PATCH] staging: slicoss: use status in slic_if_init While initializing the interface if we are not able to setup the command to UP the link then we release everything and return the error code. Signed-off-by: Sudip Mukherjee Signed-off-by: Greg Kroah-Hartman --- drivers/staging/slicoss/slicoss.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/staging/slicoss/slicoss.c b/drivers/staging/slicoss/slicoss.c index b1a8b4b9e1a3..fb663c885544 100644 --- a/drivers/staging/slicoss/slicoss.c +++ b/drivers/staging/slicoss/slicoss.c @@ -2379,7 +2379,22 @@ static int slic_if_init(struct adapter *adapter, unsigned long *flags) slic_reg32_write(&slic_regs->slic_icr, ICR_INT_ON, FLUSH); slic_link_config(adapter, LINK_AUTOSPEED, LINK_AUTOD); - slic_link_event_handler(adapter); + rc = slic_link_event_handler(adapter); + if (rc) { + /* disable interrupts then clear pending events */ + slic_reg32_write(&slic_regs->slic_icr, ICR_INT_OFF, FLUSH); + slic_reg32_write(&slic_regs->slic_isr, 0, FLUSH); + if (adapter->pingtimerset) { + del_timer(&adapter->pingtimer); + adapter->pingtimerset = 0; + } + if (card->loadtimerset) { + del_timer(&card->loadtimer); + card->loadtimerset = 0; + } + adapter->state = ADAPT_DOWN; + slic_adapter_freeresources(adapter); + } err: return rc; -- 2.34.1