mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-08 20:58:20 +03:00
tree-wide: use read_full_virtual_file() where appropriate
Wherever we read virtual files we better should use read_full_virtual_file(), to make sure we get a consistent response given how weird the kernel's handling with partial read on such file systems is.
This commit is contained in:
parent
04820600e7
commit
627055ce9a
@ -100,7 +100,7 @@ int cg_read_event(
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = read_full_file(events, &content, NULL);
|
||||
r = read_full_virtual_file(events, &content, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -114,7 +114,7 @@ static int fd_fdinfo_mnt_id(int fd, const char *filename, int flags, int *ret_mn
|
||||
xsprintf(path, "/proc/self/fdinfo/%i", subfd);
|
||||
}
|
||||
|
||||
r = read_full_file(path, &fdinfo, NULL);
|
||||
r = read_full_virtual_file(path, &fdinfo, NULL);
|
||||
if (r == -ENOENT) /* The fdinfo directory is a relatively new addition */
|
||||
return -EOPNOTSUPP;
|
||||
if (r < 0)
|
||||
|
@ -1548,7 +1548,7 @@ int pidfd_get_pid(int fd, pid_t *ret) {
|
||||
|
||||
xsprintf(path, "/proc/self/fdinfo/%i", fd);
|
||||
|
||||
r = read_full_file(path, &fdinfo, NULL);
|
||||
r = read_full_virtual_file(path, &fdinfo, NULL);
|
||||
if (r == -ENOENT) /* if fdinfo doesn't exist we assume the process does not exist */
|
||||
return -ESRCH;
|
||||
if (r < 0)
|
||||
|
@ -1125,23 +1125,23 @@ static int gather_pid_metadata(struct iovec_wrapper *iovw, Context *context) {
|
||||
(void) iovw_put_string_field_free(iovw, "COREDUMP_OPEN_FDS=", t);
|
||||
|
||||
p = procfs_file_alloca(pid, "status");
|
||||
if (read_full_file(p, &t, NULL) >= 0)
|
||||
if (read_full_virtual_file(p, &t, NULL) >= 0)
|
||||
(void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_STATUS=", t);
|
||||
|
||||
p = procfs_file_alloca(pid, "maps");
|
||||
if (read_full_file(p, &t, NULL) >= 0)
|
||||
if (read_full_virtual_file(p, &t, NULL) >= 0)
|
||||
(void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_MAPS=", t);
|
||||
|
||||
p = procfs_file_alloca(pid, "limits");
|
||||
if (read_full_file(p, &t, NULL) >= 0)
|
||||
if (read_full_virtual_file(p, &t, NULL) >= 0)
|
||||
(void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_LIMITS=", t);
|
||||
|
||||
p = procfs_file_alloca(pid, "cgroup");
|
||||
if (read_full_file(p, &t, NULL) >=0)
|
||||
if (read_full_virtual_file(p, &t, NULL) >=0)
|
||||
(void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_CGROUP=", t);
|
||||
|
||||
p = procfs_file_alloca(pid, "mountinfo");
|
||||
if (read_full_file(p, &t, NULL) >=0)
|
||||
if (read_full_virtual_file(p, &t, NULL) >=0)
|
||||
(void) iovw_put_string_field_free(iovw, "COREDUMP_PROC_MOUNTINFO=", t);
|
||||
|
||||
if (get_process_cwd(pid, &t) >= 0)
|
||||
|
@ -1002,7 +1002,7 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
|
||||
const char *p;
|
||||
|
||||
p = procfs_file_alloca(pid, "cmdline");
|
||||
r = read_full_file(p, &c->cmdline, &c->cmdline_size);
|
||||
r = read_full_virtual_file(p, &c->cmdline, &c->cmdline_size);
|
||||
if (r == -ENOENT)
|
||||
return -ESRCH;
|
||||
if (r < 0) {
|
||||
|
@ -513,7 +513,7 @@ int device_read_uevent_file(sd_device *device) {
|
||||
|
||||
path = strjoina(syspath, "/uevent");
|
||||
|
||||
r = read_full_file(path, &uevent, &uevent_len);
|
||||
r = read_full_virtual_file(path, &uevent, &uevent_len);
|
||||
if (r == -EACCES) {
|
||||
/* empty uevent files may be write-only */
|
||||
device->uevent_loaded = true;
|
||||
|
@ -342,7 +342,7 @@ static int list_files(PStoreList *list, const char *sourcepath) {
|
||||
size_t buf_size;
|
||||
|
||||
/* Now read contents of pstore file */
|
||||
r = read_full_file(ifd_path, &buf, &buf_size);
|
||||
r = read_full_virtual_file(ifd_path, &buf, &buf_size);
|
||||
if (r < 0) {
|
||||
log_warning_errno(r, "Failed to read file %s, skipping: %m", ifd_path);
|
||||
continue;
|
||||
|
@ -72,7 +72,7 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
|
||||
struct acpi_fpdt_boot_header hbrec;
|
||||
struct acpi_fpdt_boot brec;
|
||||
|
||||
r = read_full_file("/sys/firmware/acpi/tables/FPDT", &buf, &l);
|
||||
r = read_full_virtual_file("/sys/firmware/acpi/tables/FPDT", &buf, &l);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user