vfio-mdev/samples: Use u8 instead of char for handle functions
diff mbox series

Message ID 20181019180427.1386-1-natechancellor@gmail.com
State Accepted
Commit 8ba35b3a0046d6573c98f00461d9bd1b86250d35
Headers show
Series
  • vfio-mdev/samples: Use u8 instead of char for handle functions
Related show

Commit Message

Nathan Chancellor Oct. 19, 2018, 6:04 p.m. UTC
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@gmail.com>
---
 samples/vfio-mdev/mtty.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

Comments

Nathan Chancellor Dec. 17, 2018, 5:42 p.m. UTC | #1
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@gmail.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
Alex Williamson Dec. 17, 2018, 6:12 p.m. UTC | #2
On Fri, 19 Oct 2018 11:04:27 -0700
Nathan Chancellor <natechancellor@gmail.com> 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@gmail.com>
> ---
>  samples/vfio-mdev/mtty.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)

Applied to vfio next branch for v4.21.  Thanks,

Alex

> 
> 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;

Patch
diff mbox series

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;