On Sun, Sep 04, 2016 at 05:57:20PM +0200, Christophe JAILLET wrote: > Le 04/09/2016 à 14:20, Leon Romanovsky a écrit : > >On Sat, Sep 03, 2016 at 07:33:29AM +0200, Christophe JAILLET wrote: > >>Calling 'list_splice' followed by 'INIT_LIST_HEAD' is equivalent to > >>'list_splice_init'. > >It is not 100% accurate > > > >list_splice(y, z) > >INIT_LIST_HEAD(y) > > > >==> > > > >if (!list_empty(y)) > > __list_splice(y, z, z>next); > >INIT_LIST_HEAD(y) > > > >and not > > > >if (!list_empty(y)) { > > __list_splice(y, z, z>next); > > INIT_LIST_HEAD(y) > >} > > > >as list_splice_init will do. > > > You are right but if you dig further you will see that calling > INIT_LIST_HEAD on an empty list is a no-op (AFAIK). > And if this list was not already correctly initialized, then you would have > some other troubles. Thank you for the suggestion, It looks like the code after that can be skipped in case of loop_conns list is empty, the tmp_list will be empty too. 174 list_for_each_entry_safe(lc, _lc, &tmp_list, loop_node) { 175 WARN_ON(lc->conn->c_passive); 176 rds_conn_destroy(lc->conn); 177 } > > CJ >
Attachment:
signature.asc
Description: PGP signature