pci: remove unnecessary access() check
Checks
Commit Message
Just open the sysfs file and handle failure, rather than
using access(). This eliminates Coverity warnings about
"time of check versus time of use"; although for this sysfs
file that is not really an issue anyway.
Coverity ID: 347276
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/bus/pci/linux/pci.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
Comments
On Tue, Aug 13, 2019 at 5:38 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> Just open the sysfs file and handle failure, rather than
> using access(). This eliminates Coverity warnings about
> "time of check versus time of use"; although for this sysfs
> file that is not really an issue anyway.
>
> Coverity ID: 347276
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Title prefix should be "bus/pci: " (check-git-log.sh).
> ---
> drivers/bus/pci/linux/pci.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
> index 43debaa25114..6c444aa7ae3d 100644
> --- a/drivers/bus/pci/linux/pci.c
> +++ b/drivers/bus/pci/linux/pci.c
> @@ -512,18 +512,19 @@ pci_device_iommu_support_va(const struct rte_pci_device *dev)
> "%s/" PCI_PRI_FMT "/iommu/intel-iommu/cap",
> rte_pci_get_sysfs_path(), addr->domain, addr->bus, addr->devid,
> addr->function);
> - if (access(filename, F_OK) == -1) {
> - /* We don't have an Intel IOMMU, assume VA supported*/
> - return true;
> - }
>
> - /* We have an intel IOMMU */
> fp = fopen(filename, "r");
> if (fp == NULL) {
> - RTE_LOG(ERR, EAL, "%s(): can't open %s\n", __func__, filename);
> + /* We don't have an Intel IOMMU, assume VA supported*/
Nit: missing a space before closing the comment.
> + if (errno == ENOENT)
> + return true;
> +
> + RTE_LOG(ERR, EAL, "%s(): can't open %s: %s\n",
> + __func__, filename, strerror(errno));
> return false;
> }
>
> + /* We have an intel IOMMU */
> if (fscanf(fp, "%" PRIx64, &vtd_cap_reg) != 1) {
> RTE_LOG(ERR, EAL, "%s(): can't read %s\n", __func__, filename);
> fclose(fp);
> --
> 2.20.1
>
Reviewed-by: David Marchand <david.marchand@redhat.com>
On Mon, Aug 19, 2019 at 11:58 AM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Tue, Aug 13, 2019 at 5:38 PM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > Just open the sysfs file and handle failure, rather than
> > using access(). This eliminates Coverity warnings about
> > "time of check versus time of use"; although for this sysfs
> > file that is not really an issue anyway.
> >
> > Coverity ID: 347276
Fixed Coverity tag.
Added Fixes: + Cc: stable@dpdk.org
> > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
>
> Title prefix should be "bus/pci: " (check-git-log.sh).
Updated commit title.
>
>
> > ---
> > drivers/bus/pci/linux/pci.c | 13 +++++++------
> > 1 file changed, 7 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
> > index 43debaa25114..6c444aa7ae3d 100644
> > --- a/drivers/bus/pci/linux/pci.c
> > +++ b/drivers/bus/pci/linux/pci.c
> > @@ -512,18 +512,19 @@ pci_device_iommu_support_va(const struct rte_pci_device *dev)
> > "%s/" PCI_PRI_FMT "/iommu/intel-iommu/cap",
> > rte_pci_get_sysfs_path(), addr->domain, addr->bus, addr->devid,
> > addr->function);
> > - if (access(filename, F_OK) == -1) {
> > - /* We don't have an Intel IOMMU, assume VA supported*/
> > - return true;
> > - }
> >
> > - /* We have an intel IOMMU */
> > fp = fopen(filename, "r");
> > if (fp == NULL) {
> > - RTE_LOG(ERR, EAL, "%s(): can't open %s\n", __func__, filename);
> > + /* We don't have an Intel IOMMU, assume VA supported*/
>
> Nit: missing a space before closing the comment.
>
> > + if (errno == ENOENT)
> > + return true;
> > +
> > + RTE_LOG(ERR, EAL, "%s(): can't open %s: %s\n",
> > + __func__, filename, strerror(errno));
> > return false;
> > }
> >
> > + /* We have an intel IOMMU */
s/intel/Intel/
> > if (fscanf(fp, "%" PRIx64, &vtd_cap_reg) != 1) {
> > RTE_LOG(ERR, EAL, "%s(): can't read %s\n", __func__, filename);
> > fclose(fp);
> > --
> > 2.20.1
> >
>
> Reviewed-by: David Marchand <david.marchand@redhat.com>
Applied, thanks!
--
David Marchand
@@ -512,18 +512,19 @@ pci_device_iommu_support_va(const struct rte_pci_device *dev)
"%s/" PCI_PRI_FMT "/iommu/intel-iommu/cap",
rte_pci_get_sysfs_path(), addr->domain, addr->bus, addr->devid,
addr->function);
- if (access(filename, F_OK) == -1) {
- /* We don't have an Intel IOMMU, assume VA supported*/
- return true;
- }
- /* We have an intel IOMMU */
fp = fopen(filename, "r");
if (fp == NULL) {
- RTE_LOG(ERR, EAL, "%s(): can't open %s\n", __func__, filename);
+ /* We don't have an Intel IOMMU, assume VA supported*/
+ if (errno == ENOENT)
+ return true;
+
+ RTE_LOG(ERR, EAL, "%s(): can't open %s: %s\n",
+ __func__, filename, strerror(errno));
return false;
}
+ /* We have an intel IOMMU */
if (fscanf(fp, "%" PRIx64, &vtd_cap_reg) != 1) {
RTE_LOG(ERR, EAL, "%s(): can't read %s\n", __func__, filename);
fclose(fp);