On Tue, Aug 08, 2023 at 10:40:46PM +0200, Alexander Bluhm wrote:
> On Fri, Aug 04, 2023 at 12:38:23AM +0300, Vitaliy Makkoveev wrote:
> > @@ -1856,6 +1856,9 @@ sosetopt(struct socket *so, int level, i
> >             case SO_SNDLOWAT:
> >             case SO_RCVLOWAT:
> >                 {
> > +                   struct sockbuf *sb = (optname == SO_SNDBUF ||
> > +                       optname == SO_SNDLOWAT ?
> > +                       &so->so_snd : &so->so_rcv);
> > @@ -1910,6 +1896,8 @@ sosetopt(struct socket *so, int level, i
> >             case SO_SNDTIMEO:
> >             case SO_RCVTIMEO:
> >                 {
> > +                   struct sockbuf *sb = (optname == SO_SNDTIMEO ?
> > +                       &so->so_snd : &so->so_rcv);
> 
> Would it be nicer to set sb in the switch (optname) at the begining?
> 
>               struct sockbuf *sb = NULL;
> 
>                 switch (optname) {
>               case SO_SNDBUF:
>               case SO_SNDLOWAT:
>               case SO_SNDTIMEO:
>                       sb = &so->so_snd;
>                       break;
>               case SO_RCVBUF:
>               case SO_RCVLOWAT:
>               case SO_RCVTIMEO:
>                       sb = &so->so_rcv;
>                       break;
>               case SO_BINDANY:
>                       ...
>                 }
> 
> Anyway, OK bluhm@
> 

I think it's better to merge SO_BINDANY cases from both switch blocks.
This time SO_LINGER case is separated, so there is no reason for
dedicated switch block.

Index: sys/kern/uipc_socket.c
===================================================================
RCS file: /cvs/src/sys/kern/uipc_socket.c,v
retrieving revision 1.307
diff -u -p -r1.307 uipc_socket.c
--- sys/kern/uipc_socket.c      3 Aug 2023 09:49:08 -0000       1.307
+++ sys/kern/uipc_socket.c      8 Aug 2023 21:35:50 -0000
@@ -1800,13 +1800,6 @@ sosetopt(struct socket *so, int level, i
                error = ENOPROTOOPT;
        } else {
                switch (optname) {
-               case SO_BINDANY:
-                       if ((error = suser(curproc)) != 0)      /* XXX */
-                               return (error);
-                       break;
-               }
-
-               switch (optname) {
 
                case SO_LINGER:
                        if (m == NULL || m->m_len != sizeof (struct linger) ||
@@ -1824,6 +1817,9 @@ sosetopt(struct socket *so, int level, i
 
                        break;
                case SO_BINDANY:
+                       if ((error = suser(curproc)) != 0)      /* XXX */
+                               return (error);
+                       /* FALLTHROUGH */
                case SO_DEBUG:
                case SO_KEEPALIVE:
                case SO_USELOOPBACK:

Reply via email to