[BACK]Return to uipc_socket.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/uipc_socket.c between version 1.167 and 1.167.2.2

version 1.167, 2008/05/28 21:01:42 version 1.167.2.2, 2008/07/28 14:37:36
Line 500  socreate(int dom, struct socket **aso, i
Line 500  socreate(int dom, struct socket **aso, i
 #endif  #endif
         uid = kauth_cred_geteuid(l->l_cred);          uid = kauth_cred_geteuid(l->l_cred);
         so->so_uidinfo = uid_find(uid);          so->so_uidinfo = uid_find(uid);
           so->so_egid = kauth_cred_getegid(l->l_cred);
           so->so_cpid = l->l_proc->p_pid;
         if (lockso != NULL) {          if (lockso != NULL) {
                 /* Caller wants us to share a lock. */                  /* Caller wants us to share a lock. */
                 lock = lockso->so_lock;                  lock = lockso->so_lock;
Line 643  soclose(struct socket *so)
Line 645  soclose(struct socket *so)
         solock(so);          solock(so);
         if (so->so_options & SO_ACCEPTCONN) {          if (so->so_options & SO_ACCEPTCONN) {
                 do {                  do {
                         if ((so2 = TAILQ_FIRST(&so->so_q0)) != 0) {                          while ((so2 = TAILQ_FIRST(&so->so_q0)) != 0) {
                                 KASSERT(solocked2(so, so2));                                  KASSERT(solocked2(so, so2));
                                 (void) soqremque(so2, 0);                                  (void) soqremque(so2, 0);
                                 /* soabort drops the lock. */                                  /* soabort drops the lock. */
                                 (void) soabort(so2);                                  (void) soabort(so2);
                                 solock(so);                                  solock(so);
                                 continue;  
                         }                          }
                         if ((so2 = TAILQ_FIRST(&so->so_q)) != 0) {                          while ((so2 = TAILQ_FIRST(&so->so_q)) != 0) {
                                 KASSERT(solocked2(so, so2));                                  KASSERT(solocked2(so, so2));
                                 (void) soqremque(so2, 1);                                  (void) soqremque(so2, 1);
                                 /* soabort drops the lock. */                                  /* soabort drops the lock. */
                                 (void) soabort(so2);                                  (void) soabort(so2);
                                 solock(so);                                  solock(so);
                                 continue;  
                         }                          }
                 } while (0);                  } while (!TAILQ_EMPTY(&so->so_q0));
         }          }
         if (so->so_pcb == 0)          if (so->so_pcb == 0)
                 goto discard;                  goto discard;

Legend:
Removed from v.1.167  
changed lines
  Added in v.1.167.2.2

CVSweb <webmaster@jp.NetBSD.org>