diff mbox series

wifi: ray_cs: Replace the ternary conditional operator with min()

Message ID 20230626093504.1325-1-youkangren@vivo.com
State Superseded
Headers show
Series wifi: ray_cs: Replace the ternary conditional operator with min() | expand

Commit Message

You Kangren June 26, 2023, 9:35 a.m. UTC
Replace the ternary conditional operator with min() to make the code clean

Signed-off-by: You Kangren <youkangren@vivo.com>
---
 drivers/net/wireless/legacy/ray_cs.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Simon Horman June 26, 2023, 12:28 p.m. UTC | #1
On Mon, Jun 26, 2023 at 05:35:02PM +0800, You Kangren wrote:
> Replace the ternary conditional operator with min() to make the code clean
> 
> Signed-off-by: You Kangren <youkangren@vivo.com>
> ---
>  drivers/net/wireless/legacy/ray_cs.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/legacy/ray_cs.c b/drivers/net/wireless/legacy/ray_cs.c
> index 8ace797ce951..96f34d90f601 100644
> --- a/drivers/net/wireless/legacy/ray_cs.c
> +++ b/drivers/net/wireless/legacy/ray_cs.c
> @@ -2086,8 +2086,7 @@ static void ray_rx(struct net_device *dev, ray_dev_t *local,
>                         rx_data(dev, prcs, pkt_addr, rx_len);
> 
>                 copy_from_rx_buff(local, (UCHAR *) &local->last_bcn, pkt_addr,
> -                                 rx_len < sizeof(struct beacon_rx) ?
> -                                 rx_len : sizeof(struct beacon_rx));
> +                                 min(rx_len, sizeof(struct beacon_rx));

Hi You Kangren,

I like where you are going with this patch.
But unfortunately using min() here causes an x86_64 allmodconfig W=1 build
to fail with both gcc-12 and clang-16.

Perhaps min_t() would be more appropriate?

GCC 12.3.0 says:

In file included from ./include/linux/kernel.h:27,
                 from ./arch/x86/include/asm/percpu.h:27,
                 from ./arch/x86/include/asm/nospec-branch.h:14,
                 from ./arch/x86/include/asm/paravirt_types.h:27,
                 from ./arch/x86/include/asm/ptrace.h:97,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:67,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from drivers/net/wireless/legacy/ray_cs.c:20:
drivers/net/wireless/legacy/ray_cs.c: In function 'ray_rx':
./include/linux/minmax.h:20:35: warning: comparison of distinct pointer types lacks a cast
   20 |         (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
      |                                   ^~
./include/linux/minmax.h:26:18: note: in expansion of macro '__typecheck'
   26 |                 (__typecheck(x, y) && __no_side_effects(x, y))
      |                  ^~~~~~~~~~~
./include/linux/minmax.h:36:31: note: in expansion of macro '__safe_cmp'
   36 |         __builtin_choose_expr(__safe_cmp(x, y), \
      |                               ^~~~~~~~~~
./include/linux/minmax.h:67:25: note: in expansion of macro '__careful_cmp'
   67 | #define min(x, y)       __careful_cmp(x, y, <)
      |                         ^~~~~~~~~~~~~
drivers/net/wireless/legacy/ray_cs.c:2089:35: note: in expansion of macro 'min'
 2089 |                                   min(rx_len, sizeof(struct beacon_rx));
      |                                   ^~~
drivers/net/wireless/legacy/ray_cs.c:2089:72: error: expected ')' before ';' token
 2089 |                                   min(rx_len, sizeof(struct beacon_rx));
      |                                                                        ^
drivers/net/wireless/legacy/ray_cs.c:2088:34: note: to match this '('
 2088 |                 copy_from_rx_buff(local, (UCHAR *) &local->last_bcn, pkt_addr,
      |                                  ^
drivers/net/wireless/legacy/ray_cs.c:2098:23: error: expected ';' before '}' token
 2098 |                 break;
      |                       ^
      |                       ;
 2099 |         }
      |         ~
kernel test robot June 26, 2023, 6:48 p.m. UTC | #2
Hi You,

kernel test robot noticed the following build errors:

[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main linus/master v6.4 next-20230626]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/You-Kangren/wifi-ray_cs-Replace-the-ternary-conditional-operator-with-min/20230626-173628
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link:    https://lore.kernel.org/r/20230626093504.1325-1-youkangren%40vivo.com
patch subject: [PATCH] wifi: ray_cs: Replace the ternary conditional operator with min()
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20230627/202306270226.5BCJkelL-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230627/202306270226.5BCJkelL-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306270226.5BCJkelL-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/kernel.h:27,
                    from arch/x86/include/asm/percpu.h:27,
                    from arch/x86/include/asm/nospec-branch.h:14,
                    from arch/x86/include/asm/paravirt_types.h:27,
                    from arch/x86/include/asm/ptrace.h:97,
                    from arch/x86/include/asm/math_emu.h:5,
                    from arch/x86/include/asm/processor.h:13,
                    from arch/x86/include/asm/timex.h:5,
                    from include/linux/timex.h:67,
                    from include/linux/time32.h:13,
                    from include/linux/time.h:60,
                    from include/linux/stat.h:19,
                    from include/linux/module.h:13,
                    from drivers/net/wireless/legacy/ray_cs.c:20:
   drivers/net/wireless/legacy/ray_cs.c: In function 'ray_rx':
   include/linux/minmax.h:20:35: warning: comparison of distinct pointer types lacks a cast
      20 |         (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
         |                                   ^~
   include/linux/minmax.h:26:18: note: in expansion of macro '__typecheck'
      26 |                 (__typecheck(x, y) && __no_side_effects(x, y))
         |                  ^~~~~~~~~~~
   include/linux/minmax.h:36:31: note: in expansion of macro '__safe_cmp'
      36 |         __builtin_choose_expr(__safe_cmp(x, y), \
         |                               ^~~~~~~~~~
   include/linux/minmax.h:67:25: note: in expansion of macro '__careful_cmp'
      67 | #define min(x, y)       __careful_cmp(x, y, <)
         |                         ^~~~~~~~~~~~~
   drivers/net/wireless/legacy/ray_cs.c:2089:35: note: in expansion of macro 'min'
    2089 |                                   min(rx_len, sizeof(struct beacon_rx));
         |                                   ^~~
>> drivers/net/wireless/legacy/ray_cs.c:2089:72: error: expected ')' before ';' token
    2089 |                                   min(rx_len, sizeof(struct beacon_rx));
         |                                                                        ^
   drivers/net/wireless/legacy/ray_cs.c:2088:34: note: to match this '('
    2088 |                 copy_from_rx_buff(local, (UCHAR *) &local->last_bcn, pkt_addr,
         |                                  ^
>> drivers/net/wireless/legacy/ray_cs.c:2098:23: error: expected ';' before '}' token
    2098 |                 break;
         |                       ^
         |                       ;
    2099 |         }
         |         ~              


vim +2089 drivers/net/wireless/legacy/ray_cs.c

  2042	
  2043	/*===========================================================================*/
  2044	static void ray_rx(struct net_device *dev, ray_dev_t *local,
  2045			   struct rcs __iomem *prcs)
  2046	{
  2047		int rx_len;
  2048		unsigned int pkt_addr;
  2049		void __iomem *pmsg;
  2050		pr_debug("ray_rx process rx packet\n");
  2051	
  2052		/* Calculate address of packet within Rx buffer */
  2053		pkt_addr = ((readb(&prcs->var.rx_packet.rx_data_ptr[0]) << 8)
  2054			    + readb(&prcs->var.rx_packet.rx_data_ptr[1])) & RX_BUFF_END;
  2055		/* Length of first packet fragment */
  2056		rx_len = (readb(&prcs->var.rx_packet.rx_data_length[0]) << 8)
  2057		    + readb(&prcs->var.rx_packet.rx_data_length[1]);
  2058	
  2059		local->last_rsl = readb(&prcs->var.rx_packet.rx_sig_lev);
  2060		pmsg = local->rmem + pkt_addr;
  2061		switch (readb(pmsg)) {
  2062		case DATA_TYPE:
  2063			pr_debug("ray_rx data type\n");
  2064			rx_data(dev, prcs, pkt_addr, rx_len);
  2065			break;
  2066		case AUTHENTIC_TYPE:
  2067			pr_debug("ray_rx authentic type\n");
  2068			if (sniffer)
  2069				rx_data(dev, prcs, pkt_addr, rx_len);
  2070			else
  2071				rx_authenticate(local, prcs, pkt_addr, rx_len);
  2072			break;
  2073		case DEAUTHENTIC_TYPE:
  2074			pr_debug("ray_rx deauth type\n");
  2075			if (sniffer)
  2076				rx_data(dev, prcs, pkt_addr, rx_len);
  2077			else
  2078				rx_deauthenticate(local, prcs, pkt_addr, rx_len);
  2079			break;
  2080		case NULL_MSG_TYPE:
  2081			pr_debug("ray_cs rx NULL msg\n");
  2082			break;
  2083		case BEACON_TYPE:
  2084			pr_debug("ray_rx beacon type\n");
  2085			if (sniffer)
  2086				rx_data(dev, prcs, pkt_addr, rx_len);
  2087	
  2088			copy_from_rx_buff(local, (UCHAR *) &local->last_bcn, pkt_addr,
> 2089					  min(rx_len, sizeof(struct beacon_rx));
  2090	
  2091			local->beacon_rxed = 1;
  2092			/* Get the statistics so the card counters never overflow */
  2093			ray_get_stats(dev);
  2094			break;
  2095		default:
  2096			pr_debug("ray_cs unknown pkt type %2x\n",
  2097			      (unsigned int)readb(pmsg));
> 2098			break;
  2099		}
  2100
diff mbox series

Patch

diff --git a/drivers/net/wireless/legacy/ray_cs.c b/drivers/net/wireless/legacy/ray_cs.c
index 8ace797ce951..96f34d90f601 100644
--- a/drivers/net/wireless/legacy/ray_cs.c
+++ b/drivers/net/wireless/legacy/ray_cs.c
@@ -2086,8 +2086,7 @@  static void ray_rx(struct net_device *dev, ray_dev_t *local,
 			rx_data(dev, prcs, pkt_addr, rx_len);
 
 		copy_from_rx_buff(local, (UCHAR *) &local->last_bcn, pkt_addr,
-				  rx_len < sizeof(struct beacon_rx) ?
-				  rx_len : sizeof(struct beacon_rx));
+				  min(rx_len, sizeof(struct beacon_rx));
 
 		local->beacon_rxed = 1;
 		/* Get the statistics so the card counters never overflow */