---
 freebsd/sys/kern/uipc_usrreq.c | 8 ++++++++
 freebsd/sys/sys/unpcb.h        | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/freebsd/sys/kern/uipc_usrreq.c b/freebsd/sys/kern/uipc_usrreq.c
index 47cdcfbd..164f9ee3 100644
--- a/freebsd/sys/kern/uipc_usrreq.c
+++ b/freebsd/sys/kern/uipc_usrreq.c
@@ -1038,7 +1038,9 @@ uipc_listen(struct socket *so, int backlog, struct thread 
*td)
        SOCK_LOCK(so);
        error = solisten_proto_check(so);
        if (error == 0) {
+#ifndef __rtems__
                cru2x(td->td_ucred, &unp->unp_peercred);
+#endif /* __rtems__ */
                solisten_proto(so, backlog);
        }
        SOCK_UNLOCK(so);
@@ -1566,14 +1568,18 @@ uipc_ctloutput(struct socket *so, struct sockopt *sopt)
                switch (sopt->sopt_name) {
                case LOCAL_PEERCRED:
                        UNP_PCB_LOCK(unp);
+#ifndef __rtems__
                        if (unp->unp_flags & UNP_HAVEPC)
                                xu = unp->unp_peercred;
                        else {
+#endif /* __rtems__ */
                                if (so->so_type == SOCK_STREAM)
                                        error = ENOTCONN;
                                else
                                        error = EINVAL;
+#ifndef __rtems__
                        }
+#endif /* __rtems__ */
                        UNP_PCB_UNLOCK(unp);
                        if (error == 0)
                                error = sooptcopyout(sopt, &xu, sizeof(xu));
@@ -1843,6 +1849,7 @@ void
 unp_copy_peercred(struct thread *td, struct unpcb *client_unp,
     struct unpcb *server_unp, struct unpcb *listen_unp)
 {
+#ifndef __rtems__
        cru2x(td->td_ucred, &client_unp->unp_peercred);
        client_unp->unp_flags |= UNP_HAVEPC;
 
@@ -1851,6 +1858,7 @@ unp_copy_peercred(struct thread *td, struct unpcb 
*client_unp,
        server_unp->unp_flags |= UNP_HAVEPC;
        if (listen_unp->unp_flags & UNP_WANTCRED)
                client_unp->unp_flags |= UNP_WANTCRED;
+#endif /* __rtems__ */
 }
 
 static int
diff --git a/freebsd/sys/sys/unpcb.h b/freebsd/sys/sys/unpcb.h
index 3ea20b1d..43320481 100644
--- a/freebsd/sys/sys/unpcb.h
+++ b/freebsd/sys/sys/unpcb.h
@@ -80,10 +80,10 @@ struct unpcb {
        /* Cache line 2 */
 #ifndef __rtems__
        struct  vnode *unp_vnode;       /* if associated with file */
+       struct  xucred unp_peercred;    /* peer credentials, if applicable */
 #else /* __rtems__ */
        void *unp_vnode;                /* if associated with file */
 #endif /* __rtems__ */
-       struct  xucred unp_peercred;    /* peer credentials, if applicable */
        LIST_ENTRY(unpcb) unp_reflink;  /* link in unp_refs list */
        LIST_ENTRY(unpcb) unp_link;     /* glue on list of all PCBs */
        struct  unp_head unp_refs;      /* referencing socket linked list */
-- 
2.35.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to