Re: pcie-rockchip-ep.c coverity issue #1437163

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

 



[+cc Krzysztof]

On Wed, Oct 28, 2020 at 08:34:45AM +0800, Shawn Lin wrote:
> On 2020/10/28 0:16, Bjorn Helgaas wrote:
> > Hi Shawn,
> > 
> > Please take a look at this issue reported by Coverity:
> > 
> > 332 static int rockchip_pcie_ep_get_msi(struct pci_epc *epc, u8 fn)
> > 333 {
> > 334        struct rockchip_pcie_ep *ep = epc_get_drvdata(epc);
> > 335        struct rockchip_pcie *rockchip = &ep->rockchip;
> > 336        u16 flags;
> > 337
> > 338        flags = rockchip_pcie_read(rockchip,
> > 339                                   ROCKCHIP_PCIE_EP_FUNC_BASE(fn) +
> > 340                                   ROCKCHIP_PCIE_EP_MSI_CTRL_REG);
> > 
> > CID 1437163 (#2 of 2): Operands don't affect result
> > (CONSTANT_EXPRESSION_RESULT) result_independent_of_operands: flags &
> > (65536UL /* 1UL << 16 */) is always 0 regardless of the values of its
> > operands. This occurs as the logical operand of !.
> > 
> > 341        if (!(flags & ROCKCHIP_PCIE_EP_MSI_CTRL_ME))
> > 342                return -EINVAL;
> 
> Actually it should be BIT(0) instead of BIT(16),
> I will fix it, thanks.

Just a quick reminder about this and the similar issue in
rockchip_pcie_ep_send_msi_irq().

Your response above didn't seem to make it to the archive, so maybe
your patch to fix it also got lost?

Krzysztof also pointed out that rockchip_pcie_read() returns u32,
while flags is only u16.

Bjorn



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux