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

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

 




在 2020/12/24 5:04, Bjorn Helgaas 写道:
[+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.


Thanks for reminder. I didn't notice my previous patch hadn't arrived at
the archive but I just sent again a few minutes ago.

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