lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8894c3c4-4d5c-cb94-bc90-a26833ebf268@broadcom.com>
Date:   Tue, 18 Aug 2020 10:23:42 -0700
From:   Scott Branden <scott.branden@...adcom.com>
To:     Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc:     Arnd Bergmann <arnd@...db.de>, Kees Cook <keescook@...omium.org>,
        linux-kernel@...r.kernel.org, bcm-kernel-feedback-list@...adcom.com
Subject: Re: [PATCH v2 1/3] bcm-vk: add bcm_vk UAPI

Hi Greg,

On 2020-08-18 6:53 a.m., Greg Kroah-Hartman wrote:
> On Wed, Aug 05, 2020 at 05:46:29PM -0700, Scott Branden wrote:
>> Add user space api for bcm-vk driver.
>>
>> Signed-off-by: Scott Branden <scott.branden@...adcom.com>
>> ---
>>  include/uapi/linux/misc/bcm_vk.h | 99 ++++++++++++++++++++++++++++++++
>>  1 file changed, 99 insertions(+)
>>  create mode 100644 include/uapi/linux/misc/bcm_vk.h
>>
>> diff --git a/include/uapi/linux/misc/bcm_vk.h b/include/uapi/linux/misc/bcm_vk.h
>> new file mode 100644
>> index 000000000000..783087b7c31f
>> --- /dev/null
>> +++ b/include/uapi/linux/misc/bcm_vk.h
>> @@ -0,0 +1,99 @@
>> +/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
>> +/*
>> + * Copyright 2018-2020 Broadcom.
>> + */
>> +
>> +#ifndef __UAPI_LINUX_MISC_BCM_VK_H
>> +#define __UAPI_LINUX_MISC_BCM_VK_H
>> +
>> +#include <linux/ioctl.h>
>> +#include <linux/types.h>
>> +
>> +#define BCM_VK_MAX_FILENAME 64
>> +
>> +struct vk_image {
>> +	__u32 type; /* Type of image */
>> +#define VK_IMAGE_TYPE_BOOT1 1 /* 1st stage (load to SRAM) */
>> +#define VK_IMAGE_TYPE_BOOT2 2 /* 2nd stage (load to DDR) */
>> +	char filename[BCM_VK_MAX_FILENAME]; /* Filename of image */
>> +};
>> +
>> +struct vk_reset {
>> +	__u32 arg1;
>> +	__u32 arg2;
>> +};
>> +
>> +#define VK_MAGIC		0x5e
>> +
>> +/* Load image to Valkyrie */
>> +#define VK_IOCTL_LOAD_IMAGE	_IOW(VK_MAGIC, 0x2, struct vk_image)
>> +
>> +/* Send Reset to Valkyrie */
>> +#define VK_IOCTL_RESET		_IOW(VK_MAGIC, 0x4, struct vk_reset)
>> +
>> +/*
>> + * message block - basic unit in the message where a message's size is always
>> + *		   N x sizeof(basic_block)
>> + */
>> +struct vk_msg_blk {
>> +	__u8 function_id;
>> +#define VK_FID_TRANS_BUF	5
>> +#define VK_FID_SHUTDOWN		8
>> +	__u8 size;
>> +	__u16 trans_id; /* transport id, queue & msg_id */
>> +	__u32 context_id;
>> +	__u32 args[2];
>> +#define VK_CMD_PLANES_MASK	0x000f /* number of planes to up/download */
>> +#define VK_CMD_UPLOAD		0x0400 /* memory transfer to vk */
>> +#define VK_CMD_DOWNLOAD		0x0500 /* memory transfer from vk */
>> +#define VK_CMD_MASK		0x0f00 /* command mask */
>> +};
>> +
>> +#define VK_BAR_FWSTS			0x41c
>> +#define VK_BAR_COP_FWSTS		0x428
>> +/* VK_FWSTS definitions */
>> +#define VK_FWSTS_RELOCATION_ENTRY	BIT(0)
> <snip>
>
> I thought BIT() was not allowed in uapi .h files, this really works
> properly???
I did some investigation and it looks like a few other header files in include/uapi also use the BIT() macro:
include/uapi/misc/uacce/uacce.h
include/uapi/linux/psci.h
include/uapi/linux/v4l2-subdev.h
tools/include/uapi/linux/pkt_sched.h

It does look like we end up defining the BIT() macro in our user space app that includes the header file.

So, what is the proper thing to be done?
1) Move the BIT() macro somewhere in include/uapi and include it in the necessary header files
2) Use the _BITUL macro in include/uapi/linux/const.h instead?
3) something else?

> thanks,
>
> greg k-h
Regards,
Scott

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ