Message ID | 20230626093504.1325-1-youkangren@vivo.com |
---|---|
State | Superseded |
Headers | show |
Series | wifi: ray_cs: Replace the ternary conditional operator with min() | expand |
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 | } | ~
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 --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 */
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(-)