[PATCH 3/3] hdio: improve HDIO support

Dmitry V. Levin ldv at altlinux.org
Mon Aug 30 11:18:41 UTC 2021


On Sat, Aug 21, 2021 at 09:52:00AM -0400, Srikavin Ramkumar wrote:
> Add decoders for HDIO_GET_UNMASKINTR, HDIO_SET_UNMASKINTR,
> HDIO_GET_MULTCOUNT, HDIO_SET_MULTCOUNT, HDIO_OBSOLETE_IDENTITY,
> HDIO_GET_IDENTITY, HDIO_GET_KEEPSETTINGS, HDIO_SET_KEEPSETTINGS,
> HDIO_GET_32BIT, HDIO_GET_NOWERR, HDIO_GET_DMA, HDIO_GET_NICE,
> HDIO_SET_NICE, HDIO_GET_WCACHE, HDIO_GET_ACOUSTIC, HDIO_GET_ADDRESS,
> HDIO_GET_BUSSTATE, HDIO_SET_BUSSTATE, and HDIO_DRIVE_RESET.
> 
> * maint/gendefs/hdio.def: New file.
> * src/Makefile.am (libstrace_a_SOURCES): Add gen/generated.h and gen/gen_hdio.c.
> * src/gen/gen_hdio.c: Add generated file.
> * src/gen/generated.h: New file.
> * src/hdio.c: Add call to generated file for unimplemented commands.
> * src/xlat/hdio_busstates.in: New file.
> * src/xlat/hdio_ide_nice.in: Likewise.
> * tests/ioctl_hdio.c: Add tests for newly implemented commands.

I think this change worths a NEWS entry.

[...]
> diff --git a/src/Makefile.am b/src/Makefile.am
> index b7e74a76e..3189abf44 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -132,6 +132,8 @@ libstrace_a_SOURCES =	\
>  	fstatfs64.c \
>  	futex.c		\
>  	gcc_compat.h	\
> +    gen/gen_hdio.c  \
> +    gen/generated.h \
>  	get_personality.c \
>  	get_personality.h \
>  	get_robust_list.c \

Something went wrong with the indentation here.

> diff --git a/src/gen/gen_hdio.c b/src/gen/gen_hdio.c
> new file mode 100644
> index 000000000..b558a4ebd
> --- /dev/null
> +++ b/src/gen/gen_hdio.c
> @@ -0,0 +1,337 @@
> +/* AUTOMATICALLY GENERATED FROM defs/hdio.def - DO NOT EDIT */

The "AUTOMATICALLY GENERATED FROM" part looks too loud,
does it really need to be written in all caps?

> +#include <stddef.h>
> +#include "generated.h"
> +
> +typedef kernel_ulong_t kernel_size_t;
> +
> +#include <linux/hdreg.h>
> +#include "xlat/hdio_ide_nice.h"
> +#include "xlat/hdio_busstates.h"
> +static int
> +var_leaf_ioctl_HDIO_DRIVE_RESET(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
> +{
> +	tprint_arg_next();
> +	/* arg: arg (array *) */
> +	/* using decoder from defs/common.syzlang:26:1 */
> +
> +	{
> +		uint32_t int_buffer;
> +		print_array(tcp, (arg), (3), &int_buffer, sizeof(int_buffer), tfetch_mem, print_uint32_array_member, 0);
> +	}

Looks like print_xint32_array_member is a more appropriate way of printing
this data.


-- 
ldv


More information about the Strace-devel mailing list