Madhavan Srinivasan <ma...@linux.ibm.com> writes:
> Since termio interface is now obsolete, include/uapi/asm/ioctls.h
> has some constant macros referring to "struct termio", this caused
> build failure at userspace.
>
> In file included from /usr/include/asm/ioctl.h:12,
>                  from /usr/include/asm/ioctls.h:5,
>                  from tst-ioctls.c:3:
> tst-ioctls.c: In function 'get_TCGETA':
> tst-ioctls.c:12:10: error: invalid application of 'sizeof' to incomplete type 
> 'struct termio'
>    12 |   return TCGETA;
>       |          ^~~~~~
>
> Even though termios.h provides "struct termio", trying to juggle definitions 
> around to
> make it compile could introduce regressions. So better to open code it.
>
> Reported-by: Tulio Magno <tul...@ascii.art.br>
> Closes: https://lore.kernel.org/linuxppc-dev/8734dji5wl....@ascii.art.br/
> Suggested-by: Nicholas Piggin <npig...@gmail.com>
> Signed-off-by: Madhavan Srinivasan <ma...@linux.ibm.com>
> ---
> Changelog v1:
> - mpe pointing out mistake in hardcoded values.
>   Fixed the same.
>
>  arch/powerpc/include/uapi/asm/ioctls.h | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/include/uapi/asm/ioctls.h 
> b/arch/powerpc/include/uapi/asm/ioctls.h
> index 2c145da3b774..b5211e413829 100644
> --- a/arch/powerpc/include/uapi/asm/ioctls.h
> +++ b/arch/powerpc/include/uapi/asm/ioctls.h
> @@ -23,10 +23,10 @@
>  #define TCSETSW              _IOW('t', 21, struct termios)
>  #define TCSETSF              _IOW('t', 22, struct termios)
>  
> -#define TCGETA               _IOR('t', 23, struct termio)
> -#define TCSETA               _IOW('t', 24, struct termio)
> -#define TCSETAW              _IOW('t', 25, struct termio)
> -#define TCSETAF              _IOW('t', 28, struct termio)
> +#define TCGETA               0x40147417 /* _IOR('t', 23, struct termio) */
> +#define TCSETA               0x80147418 /* _IOW('t', 24, struct termio) */
> +#define TCSETAW              0x80147419 /* _IOW('t', 25, struct termio) */
> +#define TCSETAF              0x8014741c /* _IOW('t', 28, struct termio) */

These values look right to me. And the values should never change, so
hard-coding them is a reasonable solution.

Reviewed-by: Michael Ellerman <m...@ellerman.id.au>

cheers

Reply via email to