pciutils/pciutils-ocloexec.patch
Peter Simons 697120b3c8 Accepting request 971819 from home:polslinux:branches:Base:System
- 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
2022-04-25 05:35:50 +00:00

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;