Re: [PATCH] vfio-mdev/samples: Use u8 instead of char for handle functions
From: Nathan Chancellor
Date: Mon Dec 17 2018 - 12:42:37 EST
On Fri, Oct 19, 2018 at 11:04:27AM -0700, Nathan Chancellor wrote:
> Clang warns:
>
> samples/vfio-mdev/mtty.c:592:39: warning: implicit conversion from 'int'
> to 'char' changes value from 162 to -94 [-Wconstant-conversion]
> *buf = UART_MSR_DSR | UART_MSR_DDSR | UART_MSR_DCD;
> ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
> 1 warning generated.
>
> Turns out that all uses of buf in this function ultimately end up stored
> or cast to an unsigned type. Just use u8, which has the same number of
> bits but can store this larger number so Clang no longer warns.
>
> Signed-off-by: Nathan Chancellor <natechancellor@xxxxxxxxx>
> ---
> samples/vfio-mdev/mtty.c | 26 +++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/samples/vfio-mdev/mtty.c b/samples/vfio-mdev/mtty.c
> index 7abb79d8313d..f6732aa16bb1 100644
> --- a/samples/vfio-mdev/mtty.c
> +++ b/samples/vfio-mdev/mtty.c
> @@ -171,7 +171,7 @@ static struct mdev_state *find_mdev_state_by_uuid(uuid_le uuid)
> return NULL;
> }
>
> -void dump_buffer(char *buf, uint32_t count)
> +void dump_buffer(u8 *buf, uint32_t count)
> {
> #if defined(DEBUG)
> int i;
> @@ -250,7 +250,7 @@ static void mtty_create_config_space(struct mdev_state *mdev_state)
> }
>
> static void handle_pci_cfg_write(struct mdev_state *mdev_state, u16 offset,
> - char *buf, u32 count)
> + u8 *buf, u32 count)
> {
> u32 cfg_addr, bar_mask, bar_index = 0;
>
> @@ -304,7 +304,7 @@ static void handle_pci_cfg_write(struct mdev_state *mdev_state, u16 offset,
> }
>
> static void handle_bar_write(unsigned int index, struct mdev_state *mdev_state,
> - u16 offset, char *buf, u32 count)
> + u16 offset, u8 *buf, u32 count)
> {
> u8 data = *buf;
>
> @@ -475,7 +475,7 @@ static void handle_bar_write(unsigned int index, struct mdev_state *mdev_state,
> }
>
> static void handle_bar_read(unsigned int index, struct mdev_state *mdev_state,
> - u16 offset, char *buf, u32 count)
> + u16 offset, u8 *buf, u32 count)
> {
> /* Handle read requests by guest */
> switch (offset) {
> @@ -650,7 +650,7 @@ static void mdev_read_base(struct mdev_state *mdev_state)
> }
> }
>
> -static ssize_t mdev_access(struct mdev_device *mdev, char *buf, size_t count,
> +static ssize_t mdev_access(struct mdev_device *mdev, u8 *buf, size_t count,
> loff_t pos, bool is_write)
> {
> struct mdev_state *mdev_state;
> @@ -698,7 +698,7 @@ static ssize_t mdev_access(struct mdev_device *mdev, char *buf, size_t count,
> #if defined(DEBUG_REGS)
> pr_info("%s: BAR%d WR @0x%llx %s val:0x%02x dlab:%d\n",
> __func__, index, offset, wr_reg[offset],
> - (u8)*buf, mdev_state->s[index].dlab);
> + *buf, mdev_state->s[index].dlab);
> #endif
> handle_bar_write(index, mdev_state, offset, buf, count);
> } else {
> @@ -708,7 +708,7 @@ static ssize_t mdev_access(struct mdev_device *mdev, char *buf, size_t count,
> #if defined(DEBUG_REGS)
> pr_info("%s: BAR%d RD @0x%llx %s val:0x%02x dlab:%d\n",
> __func__, index, offset, rd_reg[offset],
> - (u8)*buf, mdev_state->s[index].dlab);
> + *buf, mdev_state->s[index].dlab);
> #endif
> }
> break;
> @@ -827,7 +827,7 @@ ssize_t mtty_read(struct mdev_device *mdev, char __user *buf, size_t count,
> if (count >= 4 && !(*ppos % 4)) {
> u32 val;
>
> - ret = mdev_access(mdev, (char *)&val, sizeof(val),
> + ret = mdev_access(mdev, (u8 *)&val, sizeof(val),
> *ppos, false);
> if (ret <= 0)
> goto read_err;
> @@ -839,7 +839,7 @@ ssize_t mtty_read(struct mdev_device *mdev, char __user *buf, size_t count,
> } else if (count >= 2 && !(*ppos % 2)) {
> u16 val;
>
> - ret = mdev_access(mdev, (char *)&val, sizeof(val),
> + ret = mdev_access(mdev, (u8 *)&val, sizeof(val),
> *ppos, false);
> if (ret <= 0)
> goto read_err;
> @@ -851,7 +851,7 @@ ssize_t mtty_read(struct mdev_device *mdev, char __user *buf, size_t count,
> } else {
> u8 val;
>
> - ret = mdev_access(mdev, (char *)&val, sizeof(val),
> + ret = mdev_access(mdev, (u8 *)&val, sizeof(val),
> *ppos, false);
> if (ret <= 0)
> goto read_err;
> @@ -889,7 +889,7 @@ ssize_t mtty_write(struct mdev_device *mdev, const char __user *buf,
> if (copy_from_user(&val, buf, sizeof(val)))
> goto write_err;
>
> - ret = mdev_access(mdev, (char *)&val, sizeof(val),
> + ret = mdev_access(mdev, (u8 *)&val, sizeof(val),
> *ppos, true);
> if (ret <= 0)
> goto write_err;
> @@ -901,7 +901,7 @@ ssize_t mtty_write(struct mdev_device *mdev, const char __user *buf,
> if (copy_from_user(&val, buf, sizeof(val)))
> goto write_err;
>
> - ret = mdev_access(mdev, (char *)&val, sizeof(val),
> + ret = mdev_access(mdev, (u8 *)&val, sizeof(val),
> *ppos, true);
> if (ret <= 0)
> goto write_err;
> @@ -913,7 +913,7 @@ ssize_t mtty_write(struct mdev_device *mdev, const char __user *buf,
> if (copy_from_user(&val, buf, sizeof(val)))
> goto write_err;
>
> - ret = mdev_access(mdev, (char *)&val, sizeof(val),
> + ret = mdev_access(mdev, (u8 *)&val, sizeof(val),
> *ppos, true);
> if (ret <= 0)
> goto write_err;
> --
> 2.19.1
>
Gentle ping for review.
Thank you,
Nathan