summaryrefslogtreecommitdiffstats
path: root/drivers/net/caif
diff options
context:
space:
mode:
authorAlexey Khoroshilov <khoroshilov@ispras.ru>2013-02-17 02:24:37 +0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-02-18 11:05:14 -0800
commit9e17df37d710f8998e9cb10a548304fe33d4a5c2 (patch)
tree67e3c53b0015d37f23b76c8f661342b8ea504b26 /drivers/net/caif
parentf30e826069918da0876493e2de9ba13287b68e0a (diff)
tty: mxser: improve error handling in mxser_probe() and mxser_module_init()
1. Currently mxser_probe() and mxser_module_init() ignore errors that can happen in tty_port_register_device(). 2. mxser_module_init() does not deallocate resources allocated in mxser_get_ISA_conf() if mxser_initbrd() failed. The patch adds proper error handling in all the cases. Also it moves free_irq() from mxser_release_ISA_res() to mxser_board_remove(), since it makes mxser_release_ISA_res() a counterpart for mxser_get_ISA_conf(), while free_irq() is relevant to both ISA and PCI boards. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/net/caif')
0 files changed, 0 insertions, 0 deletions
f_perl.xs?h=v7.4.2059&id=41c363a3154dd1caeb431fa54748ad48ef6d3bd1'>src/if_perl.xs
@@ -831,8 +831,7 @@ newWINrv(SV *rv, win_T *ptr)
ptr->w_perl_private = newSV(0);
sv_setiv(ptr->w_perl_private, PTR2IV(ptr));
}
- else
- SvREFCNT_inc_void_NN(ptr->w_perl_private);
+ SvREFCNT_inc_void_NN(ptr->w_perl_private);
SvRV(rv) = ptr->w_perl_private;
SvROK_on(rv);
return sv_bless(rv, gv_stashpv("VIWIN", TRUE));
@@ -847,8 +846,7 @@ newBUFrv(SV *rv, buf_T *ptr)
ptr->b_perl_private = newSV(0);
sv_setiv(ptr->b_perl_private, PTR2IV(ptr));
}
- else
- SvREFCNT_inc_void_NN(ptr->b_perl_private);
+ SvREFCNT_inc_void_NN(ptr->b_perl_private);
SvRV(rv) = ptr->b_perl_private;
SvROK_on(rv);
return sv_bless(rv, gv_stashpv("VIBUF", TRUE));
@@ -918,12 +916,13 @@ I32 cur_val(IV iv, SV *sv)
else
rv = newBUFrv(newSV(0), curbuf);
- if (SvRV(sv) == SvRV(rv))
- SvREFCNT_dec(SvRV(rv));
- else // XXX: Not sure if the `else` condition are right
- // Test_SvREFCNT() pass in all case.
+ if (SvRV(sv) != SvRV(rv))
+ // XXX: This magic variable is a bit confusing...
+ // Is curently refcounted ?
sv_setsv(sv, rv);
+ SvREFCNT_dec(rv);
+
return 0;
}
#endif /* !PROTO */