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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 17 Dec 2018 10:42:29 -0700
From:   Nathan Chancellor <natechancellor@...il.com>
To:     Kirti Wankhede <kwankhede@...dia.com>
Cc:     kvm@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] vfio-mdev/samples: Use u8 instead of char for handle
 functions

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@...il.com>
> ---
>  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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ