Re: [bug report] ptp: ocp: Add debugfs entry for timecard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Also:

drivers/ptp/ptp_ocp.c:3154 ptp_ocp_summary_show() warn: right shifting more than type allows 16 vs 16

regards,
dan carpenter

On Wed, Mar 16, 2022 at 02:15:46PM +0300, Dan Carpenter wrote:
> Hello Jonathan Lemon,
> 
> The patch f67bf662d2cf: "ptp: ocp: Add debugfs entry for timecard"
> from Sep 14, 2021, leads to the following Smatch static checker
> warning:
> 
> 	drivers/ptp/ptp_ocp.c:3102 ptp_ocp_summary_show()
> 	warn: right shifting more than type allows 16 vs 16
> 
> drivers/ptp/ptp_ocp.c
>     2969 static int
>     2970 ptp_ocp_summary_show(struct seq_file *s, void *data)
>     2971 {
>     2972         struct device *dev = s->private;
>     2973         struct ptp_system_timestamp sts;
>     2974         u16 sma_val[4][2], ctrl, val;
>                                     ^^^^
> This "ctrl" variable should probably be a u32.
> 
>     2975         struct ts_reg __iomem *ts_reg;
>     2976         struct timespec64 ts;
>     2977         struct ptp_ocp *bp;
>     2978         char *src, *buf;
>     2979         bool on, map;
>     2980         int i;
>     2981 
>     2982         buf = (char *)__get_free_page(GFP_KERNEL);
>     2983         if (!buf)
>     2984                 return -ENOMEM;
>     2985 
> 
> [ snip ]
> 
>     3087 
>     3088         if (bp->fw_cap & OCP_CAP_SIGNAL)
>     3089                 for (i = 0; i < 4; i++)
>     3090                         _signal_summary_show(s, bp, i);
>     3091 
>     3092         if (bp->fw_cap & OCP_CAP_FREQ)
>     3093                 for (i = 0; i < 4; i++)
>     3094                         _frequency_summary_show(s, i, bp->freq_in[i]);
>     3095 
>     3096         if (bp->irig_out) {
>     3097                 ctrl = ioread32(&bp->irig_out->ctrl);
> 
> reads a u32
> 
>     3098                 on = ctrl & IRIG_M_CTRL_ENABLE;
>     3099                 val = ioread32(&bp->irig_out->status);
>     3100                 gpio_output_map(buf, bp, sma_val, 4);
>     3101                 seq_printf(s, "%7s: %s, error: %d, mode %d, out: %s\n", "IRIG",
> --> 3102                            on ? " ON" : "OFF", val, (ctrl >> 16), buf);
>                                                               ^^^^^^^^^^
> shifts to zero
> 
>     3103         }
>     3104 
>     3105         if (bp->irig_in) {
>     3106                 on = ioread32(&bp->irig_in->ctrl) & IRIG_S_CTRL_ENABLE;
>     3107                 val = ioread32(&bp->irig_in->status);
>     3108                 gpio_input_map(buf, bp, sma_val, 4, NULL);
>     3109                 seq_printf(s, "%7s: %s, error: %d, src: %s\n", "IRIG in",
>     3110                            on ? " ON" : "OFF", val, buf);
>     3111         }
>     3112 
> 
> regards,
> dan carpenter



[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux