- Update to 3.8.0: * Filters can now match devices based on partially specified class code and also on the programming interface. * Reporting of link speeds, power limits, and virtual function tags has been updated to the current PCIe specification. * We decode the Data Object Exchange capability. * Bus mapping mode works in non-zero domains. * pci_fill_info() can fetch more fields: bridge bases, programming interface, revision, subsystem vendor and device ID, OS driver, and also parent bridge. Internally, the implementation was rewritten, significantly reducing the number of corner cases to be handled. * If the configuration space is not readable for some reason (e.g., the cfgmgr32 back-end, but also badly implemented sleep mode of some devices), lspci prints only information provided by the OS. * The Hurd back-end was greatly improved thanks to Joan Lledó. * Various minor bug fixes and improvements. * As usually, updated pci.ids to the current snapshot of the database. - Rebase pciutils-3.1.9_pkgconfig.patch - Rebase pciutils-ocloexec.patch - Rebase pciutils-endianh.patch - Drop pciutils-add-decode-support-for-RCECs.patch OBS-URL: https://build.opensuse.org/request/show/971819 OBS-URL: https://build.opensuse.org/package/show/Base:System/pciutils?expand=0&rev=82
129 lines
4.8 KiB
Diff
129 lines
4.8 KiB
Diff
Index: pciutils-3.8.0/lib/dump.c
|
|
===================================================================
|
|
--- pciutils-3.8.0.orig/lib/dump.c
|
|
+++ pciutils-3.8.0/lib/dump.c
|
|
@@ -64,7 +64,7 @@ dump_init(struct pci_access *a)
|
|
|
|
if (!name)
|
|
a->error("dump: File name not given.");
|
|
- if (!(f = fopen(name, "r")))
|
|
+ if (!(f = fopen(name, "re")))
|
|
a->error("dump: Cannot open %s: %s", name, strerror(errno));
|
|
while (fgets(buf, sizeof(buf)-1, f))
|
|
{
|
|
Index: pciutils-3.8.0/lib/names-cache.c
|
|
===================================================================
|
|
--- pciutils-3.8.0.orig/lib/names-cache.c
|
|
+++ pciutils-3.8.0/lib/names-cache.c
|
|
@@ -63,7 +63,7 @@ pci_id_cache_load(struct pci_access *a,
|
|
return 0;
|
|
}
|
|
|
|
- f = fopen(name, "rb");
|
|
+ f = fopen(name, "rbe");
|
|
if (!f)
|
|
{
|
|
a->debug("Cache file does not exist\n");
|
|
@@ -136,7 +136,7 @@ pci_id_cache_flush(struct pci_access *a)
|
|
tmpname = pci_malloc(a, strlen(name) + strlen(hostname) + 64);
|
|
sprintf(tmpname, "%s.tmp-%s-%d", name, hostname, this_pid);
|
|
|
|
- f = fopen(tmpname, "wb");
|
|
+ f = fopen(tmpname, "wbe");
|
|
if (!f)
|
|
{
|
|
a->warning("Cannot write to %s: %s", name, strerror(errno));
|
|
Index: pciutils-3.8.0/lib/names-parse.c
|
|
===================================================================
|
|
--- pciutils-3.8.0.orig/lib/names-parse.c
|
|
+++ pciutils-3.8.0/lib/names-parse.c
|
|
@@ -52,7 +52,7 @@ static pci_file pci_open(struct pci_acce
|
|
typedef FILE * pci_file;
|
|
#define pci_gets(f, l, s) fgets(l, s, f)
|
|
#define pci_eof(f) feof(f)
|
|
-#define pci_open(a) fopen(a->id_file_name, "r")
|
|
+#define pci_open(a) fopen(a->id_file_name, "re")
|
|
#define pci_close(f) fclose(f)
|
|
#define PCI_ERROR(f, err) if (!err && ferror(f)) err = "I/O error";
|
|
#endif
|
|
Index: pciutils-3.8.0/lib/proc.c
|
|
===================================================================
|
|
--- pciutils-3.8.0.orig/lib/proc.c
|
|
+++ pciutils-3.8.0/lib/proc.c
|
|
@@ -63,7 +63,7 @@ proc_scan(struct pci_access *a)
|
|
|
|
if (snprintf(buf, sizeof(buf), "%s/devices", pci_get_param(a, "proc.path")) == sizeof(buf))
|
|
a->error("File name too long");
|
|
- f = fopen(buf, "r");
|
|
+ f = fopen(buf, "re");
|
|
if (!f)
|
|
a->error("Cannot open %s", buf);
|
|
while (fgets(buf, sizeof(buf)-1, f))
|
|
@@ -147,7 +147,7 @@ proc_setup(struct pci_dev *d, int rw)
|
|
if (e < 0 || e >= (int) sizeof(buf))
|
|
a->error("File name too long");
|
|
a->fd_rw = a->writeable || rw;
|
|
- a->fd = open(buf, a->fd_rw ? O_RDWR : O_RDONLY);
|
|
+ a->fd = open(buf, (a->fd_rw ? O_RDWR : O_RDONLY) | O_CLOEXEC);
|
|
if (a->fd < 0)
|
|
{
|
|
e = snprintf(buf, sizeof(buf), "%s/%04x:%02x/%02x.%d",
|
|
@@ -155,7 +155,7 @@ proc_setup(struct pci_dev *d, int rw)
|
|
d->domain, d->bus, d->dev, d->func);
|
|
if (e < 0 || e >= (int) sizeof(buf))
|
|
a->error("File name too long");
|
|
- a->fd = open(buf, a->fd_rw ? O_RDWR : O_RDONLY);
|
|
+ a->fd = open(buf, (a->fd_rw ? O_RDWR : O_RDONLY) | O_CLOEXEC);
|
|
}
|
|
if (a->fd < 0)
|
|
a->warning("Cannot open %s", buf);
|
|
Index: pciutils-3.8.0/lib/sysfs.c
|
|
===================================================================
|
|
--- pciutils-3.8.0.orig/lib/sysfs.c
|
|
+++ pciutils-3.8.0/lib/sysfs.c
|
|
@@ -96,7 +96,7 @@ sysfs_get_string(struct pci_dev *d, char
|
|
void (*warn)(char *msg, ...) = (mandatory ? a->error : a->warning);
|
|
|
|
sysfs_obj_name(d, object, namebuf);
|
|
- fd = open(namebuf, O_RDONLY);
|
|
+ fd = open(namebuf, O_RDONLY|O_CLOEXEC);
|
|
if (fd < 0)
|
|
{
|
|
if (mandatory || errno != ENOENT)
|
|
@@ -160,7 +160,7 @@ sysfs_get_resources(struct pci_dev *d)
|
|
|
|
have_bar_bases = have_rom_base = have_bridge_bases = 0;
|
|
sysfs_obj_name(d, "resource", namebuf);
|
|
- file = fopen(namebuf, "r");
|
|
+ file = fopen(namebuf, "re");
|
|
if (!file)
|
|
a->error("Cannot open %s: %s", namebuf, strerror(errno));
|
|
for (i = 0; i < 7+6+4+1; i++)
|
|
@@ -300,7 +300,7 @@ sysfs_fill_slots(struct pci_access *a)
|
|
n = snprintf(namebuf, OBJNAMELEN, "%s/%s/%s", dirname, entry->d_name, "address");
|
|
if (n < 0 || n >= OBJNAMELEN)
|
|
a->error("File name too long");
|
|
- file = fopen(namebuf, "r");
|
|
+ file = fopen(namebuf, "re");
|
|
/*
|
|
* Old versions of Linux had a fakephp which didn't have an 'address'
|
|
* file. There's no useful information to be gleaned from these
|
|
@@ -503,7 +503,7 @@ sysfs_setup(struct pci_dev *d, int inten
|
|
if (a->fd_vpd < 0)
|
|
{
|
|
sysfs_obj_name(d, "vpd", namebuf);
|
|
- a->fd_vpd = open(namebuf, O_RDONLY);
|
|
+ a->fd_vpd = open(namebuf, O_RDONLY|O_CLOEXEC);
|
|
/* No warning on error; vpd may be absent or accessible only to root */
|
|
}
|
|
return a->fd_vpd;
|
|
@@ -513,7 +513,7 @@ sysfs_setup(struct pci_dev *d, int inten
|
|
{
|
|
sysfs_obj_name(d, "config", namebuf);
|
|
a->fd_rw = a->writeable || intent == SETUP_WRITE_CONFIG;
|
|
- a->fd = open(namebuf, a->fd_rw ? O_RDWR : O_RDONLY);
|
|
+ a->fd = open(namebuf, (a->fd_rw ? O_RDWR : O_RDONLY) | O_CLOEXEC);
|
|
if (a->fd < 0)
|
|
a->warning("Cannot open %s", namebuf);
|
|
a->fd_pos = 0;
|