On Sun, Apr 08, 2018 at 04:54:07PM +0000, Brooks Davis wrote:
> Author: brooks
> Date: Sun Apr  8 16:54:07 2018
> New Revision: 332288
> URL: https://svnweb.freebsd.org/changeset/base/332288
> 
> Log:
>   MFC r331797:
>   
>   Use an accessor function to access ifr_data.
>   
>   This fixes 32-bit compat (no ioctl command defintions are required
>   as struct ifreq is the same size).
>   
>   Reviewed by:        kib
>   Obtained from:      CheriBSD
>   Sponsored by:       DARPA, AFRL
>   Differential Revision:      https://reviews.freebsd.org/D14900
> 
> Modified:
[...]
>   stable/11/sys/dev/wl/if_wl.c

> Directory Properties:
>   stable/11/   (props changed)
> 
[...]
> Modified: stable/11/sys/dev/wl/if_wl.c
> ==============================================================================
> --- stable/11/sys/dev/wl/if_wl.c      Sun Apr  8 16:46:24 2018        
> (r332287)
> +++ stable/11/sys/dev/wl/if_wl.c      Sun Apr  8 16:54:07 2018        
> (r332288)
> @@ -1313,7 +1313,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
>       }
>       WL_UNLOCK(sc);
>  
> -     error = copyout(psa_buf, ifr->ifr_data, sizeof(psa_buf));
> +     error = copyout(psa_buf, ifr_data_get_ptr(ifr), sizeof(psa_buf));
>       break;
>  
>  
> @@ -1323,7 +1323,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
>       if ((error = priv_check(td, PRIV_DRIVER)))
>           break;
>  
> -     error = copyin(ifr->ifr_data, psa_buf, sizeof(psa_buf));
> +     error = copyin(ifr_data_get_ptr(ifr), psa_buf, sizeof(psa_buf));
>       if (error)
>           break;
>       
> @@ -1357,7 +1357,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
>       /* get the current NWID out of the sc since we stored it there */
>      case SIOCGWLCNWID:
>       WL_LOCK(sc);
> -     ifr->ifr_data = (caddr_t) (sc->nwid[0] << 8 | sc->nwid[1]);
> +     ifr_data_get_ptr(ifr) = (caddr_t) (sc->nwid[0] << 8 | sc->nwid[1]);
>       WL_UNLOCK(sc);
>       break;
>  

This part of the change appears to have broken i386 with the following:

 /usr/src/sys/modules/wl/../../dev/wl/if_wl.c:1360:24: error: expression is not 
assignable
         ifr_data_get_ptr(ifr) = (caddr_t) (sc->nwid[0] << 8 | sc->nwid[1]);
        ~~~~~~~~~~~~~~~~~~~~~ ^
 1 error generated.
 --- if_wl.o ---
 *** [if_wl.o] Error code 1

 make[4]: stopped in /usr/src/sys/modules/wl
 1 error

Glen

Attachment: signature.asc
Description: PGP signature

Reply via email to