Message ID | 20250116172019.88116-1-colin.i.king@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [next] PCI: Fix ternary operator that never returns 0 | expand |
On Thu, Jan 16, 2025 at 05:20:19PM +0000, Colin Ian King wrote: > The left hand size of the ? operator is always true because of the addition > of PCIE_STD_NUM_TLP_HEADERLOG and so dev->eetlp_prefix_max is always being > returned and the 0 is never returned (dead code). Fix this by adding the > required parentheses around the ternary operator. > > Fixes: 00048c2d5f11 ("PCI: Add TLP Prefix reading to pcie_read_tlp_log()") > Signed-off-by: Colin Ian King <colin.i.king@gmail.com> Squashed into the 00048c2d5f11 ("PCI: Add TLP Prefix reading to pcie_read_tlp_log()") commit, headed for v6.14, thanks! > --- > drivers/pci/pcie/tlp.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pcie/tlp.c b/drivers/pci/pcie/tlp.c > index 9b9e348fb1a0..0860b5da837f 100644 > --- a/drivers/pci/pcie/tlp.c > +++ b/drivers/pci/pcie/tlp.c > @@ -22,8 +22,8 @@ > unsigned int aer_tlp_log_len(struct pci_dev *dev, u32 aercc) > { > return PCIE_STD_NUM_TLP_HEADERLOG + > - (aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? > - dev->eetlp_prefix_max : 0; > + ((aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? > + dev->eetlp_prefix_max : 0); > } > > #ifdef CONFIG_PCIE_DPC > -- > 2.47.1 >
On Thu, 16 Jan 2025 17:20:19 +0000 Colin Ian King <colin.i.king@gmail.com> wrote: > The left hand size of the ? operator is always true because of the addition > of PCIE_STD_NUM_TLP_HEADERLOG and so dev->eetlp_prefix_max is always being > returned and the 0 is never returned (dead code). Fix this by adding the > required parentheses around the ternary operator. > > Fixes: 00048c2d5f11 ("PCI: Add TLP Prefix reading to pcie_read_tlp_log()") > Signed-off-by: Colin Ian King <colin.i.king@gmail.com> > --- > drivers/pci/pcie/tlp.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pcie/tlp.c b/drivers/pci/pcie/tlp.c > index 9b9e348fb1a0..0860b5da837f 100644 > --- a/drivers/pci/pcie/tlp.c > +++ b/drivers/pci/pcie/tlp.c > @@ -22,8 +22,8 @@ > unsigned int aer_tlp_log_len(struct pci_dev *dev, u32 aercc) > { > return PCIE_STD_NUM_TLP_HEADERLOG + > - (aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? > - dev->eetlp_prefix_max : 0; > + ((aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? You can remove the extra set around the condition itself as well. They are a good hint the writer doesn't know their operator precedences :-) David > + dev->eetlp_prefix_max : 0); > } > > #ifdef CONFIG_PCIE_DPC
On Thu, Jan 16, 2025 at 10:49:44PM +0000, David Laight wrote: > On Thu, 16 Jan 2025 17:20:19 +0000 > Colin Ian King <colin.i.king@gmail.com> wrote: > > > The left hand size of the ? operator is always true because of the addition > > of PCIE_STD_NUM_TLP_HEADERLOG and so dev->eetlp_prefix_max is always being > > returned and the 0 is never returned (dead code). Fix this by adding the > > required parentheses around the ternary operator. > > > > Fixes: 00048c2d5f11 ("PCI: Add TLP Prefix reading to pcie_read_tlp_log()") > > Signed-off-by: Colin Ian King <colin.i.king@gmail.com> > > --- > > drivers/pci/pcie/tlp.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/pci/pcie/tlp.c b/drivers/pci/pcie/tlp.c > > index 9b9e348fb1a0..0860b5da837f 100644 > > --- a/drivers/pci/pcie/tlp.c > > +++ b/drivers/pci/pcie/tlp.c > > @@ -22,8 +22,8 @@ > > unsigned int aer_tlp_log_len(struct pci_dev *dev, u32 aercc) > > { > > return PCIE_STD_NUM_TLP_HEADERLOG + > > - (aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? > > - dev->eetlp_prefix_max : 0; > > + ((aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? > > You can remove the extra set around the condition itself as well. > They are a good hint the writer doesn't know their operator > precedences :-) Please leave them as-is... I obsolutely do not remember the operator precedences between & and ? and I have to look it up every time I see it. regards, dan carpenter
diff --git a/drivers/pci/pcie/tlp.c b/drivers/pci/pcie/tlp.c index 9b9e348fb1a0..0860b5da837f 100644 --- a/drivers/pci/pcie/tlp.c +++ b/drivers/pci/pcie/tlp.c @@ -22,8 +22,8 @@ unsigned int aer_tlp_log_len(struct pci_dev *dev, u32 aercc) { return PCIE_STD_NUM_TLP_HEADERLOG + - (aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? - dev->eetlp_prefix_max : 0; + ((aercc & PCI_ERR_CAP_PREFIX_LOG_PRESENT) ? + dev->eetlp_prefix_max : 0); } #ifdef CONFIG_PCIE_DPC
The left hand size of the ? operator is always true because of the addition of PCIE_STD_NUM_TLP_HEADERLOG and so dev->eetlp_prefix_max is always being returned and the 0 is never returned (dead code). Fix this by adding the required parentheses around the ternary operator. Fixes: 00048c2d5f11 ("PCI: Add TLP Prefix reading to pcie_read_tlp_log()") Signed-off-by: Colin Ian King <colin.i.king@gmail.com> --- drivers/pci/pcie/tlp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)