Re: [PATCH v12 2/3] selftests: tdx: Test TDX attestation GetReport support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 8, 2022 at 8:45 PM Sathyanarayanan Kuppuswamy
<sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> wrote:
>
>
>
> On 9/8/22 7:16 AM, Wander Lairson Costa wrote:
> >> +#ifdef DEBUG
> >> +static void print_array_hex(const char *title, const char *prefix_str,
> >> +            const void *buf, int len)
> >> +{
> >> +    const __u8 *ptr = buf;
> >> +    int i, rowsize = HEX_DUMP_SIZE;
> >> +
> >> +    if (!len || !buf)
> >> +            return;
> >> +
> >> +    printf("\t\t%s", title);
> >> +
> >> +    for (i = 0; i < len; i++) {
> >> +            if (!(i % rowsize))
> >> +                    printf("\n%s%.8x:", prefix_str, i);
> >> +            printf(" %.2x", ptr[i]);
> >> +    }
> >> +
> >> +    printf("\n");
> >> +}
> >> +#endif
> >> +
> >> +TEST(verify_report)
> >> +{
> >> +    __u8 reportdata[TDX_REPORTDATA_LEN];
> >> +    struct tdreport tdreport;
> >> +    struct tdx_report_req req;
> >> +    int devfd, i;
> >> +
> >> +    devfd = open(TDX_GUEST_DEVNAME, O_RDWR | O_SYNC);
> >> +
> >> +    ASSERT_LT(0, devfd);
> >> +
> >> +    /* Generate sample report data */
> >> +    for (i = 0; i < TDX_REPORTDATA_LEN; i++)
> >> +            reportdata[i] = i;
> >> +
> >> +    /* Initialize IOCTL request */
> >> +    req.subtype     = 0;
> >> +    req.reportdata  = (__u64)reportdata;
> >> +    req.rpd_len     = TDX_REPORTDATA_LEN;
> >> +    req.tdreport    = (__u64)&tdreport;
> >> +    req.tdr_len     = sizeof(tdreport);
> >> +
> >> +    /* Get TDREPORT */
> >> +    ASSERT_EQ(0, ioctl(devfd, TDX_CMD_GET_REPORT, &req));
> >> +
> >> +#ifdef DEBUG
> >> +    print_array_hex("\n\t\tTDX report data\n", "",
> >> +                    reportdata, sizeof(reportdata));
> >> +
> >> +    print_array_hex("\n\t\tTDX tdreport data\n", "",
> >> +                    &tdreport, sizeof(tdreport));
> >> +#endif
> > You can unconditionally define print_array_hex, and
> > use `if (DEBUG)` instead of #ifdef `DEBUG here`. The compiler
> > will get rid of the unused code when DEBUG is not defined
> > as expected, but you get the parser to validate it
> > independent of the definition of DEBUG.
>
> Currently, DEBUG is a macro, so we cannot use if (DEBUG) directly.
> You are suggesting to change DEBUG to a variable? Any reason to
> make this change? I think both changes are functionally similar.
> So I am wondering why to make this change?
>

My thought is always to define DEBUG. If in debug mode it is defined
to 1; otherwise to 0.
Then, you can use `if (DEBUG)` instead of `#ifdef DEBUG`. But the
former will always check the syntax of the debug code,
independent of the value of DEBUG, and the compiler will generate the
same code. The GNU coding standard [1] explains that
better than I do.

[1] https://www.gnu.org/prep/standards/standards.html#Conditional-Compilation

> >
>
> --
> Sathyanarayanan Kuppuswamy
> Linux Kernel Developer
>




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux