Resending the Mail, if anyone has looked at it.

Thanks
RaviPrakash Darbha
rdar...@juniper.net<mailto:rdar...@juniper.net>




On May 19, 2016, at 2:06 PM, RaviPrakash Darbha 
<rdar...@juniper.net<mailto:rdar...@juniper.net>> wrote:

Hello Andre

I encountered a double lock issue in unp_connectat function. After looking at 
the code , I think the unp_link_rwlock is being locked once unp_connectat and 
once again in unp_detach  (called from sofree ). Would like to get your opinion 
on the issue and the fix. Below is the exact call stack.


UNP_LINK_WLOCK();         <——————————  1 st call
…..
…..
if (so->so_proto->pr_flags & PR_CONNREQUIRED) {
     if (so2->so_options & SO_ACCEPTCONN
         CURVNET_SET(so2->so_vnet);
          so3 = sonewconn(so2, 0);
          // Expanding sonewconn
          {
             sonewconn
              {
                   ……
                   soalloc
                   …….
                   pru_attach
                   …….
                   if (!(head->so_options & SO_ACCEPTCONN) &&
                   ((head->so_proto->pr_protocol != IPPROTO_SCTP) ||
                    (head->so_type != SOCK_SEQPACKET))) {
                       ……….
                       sofree(so);             /* NB: returns ACCEPT_UNLOCK'ed. 
*/

                       // Expanding sofree

                      {

                        …….

                        pru_detach

                        // expanding pru_detach

                        {

                             // Recursive wlock acquiring.

                             UNP_LINK_WLOCK()     <——————————  2nd Call

Let me know your thoughts or if you need more information. Thanks !

Thanks
RaviPrakash Darbha
rdar...@juniper.net<mailto:rdar...@juniper.net>




_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to