mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-26 09:57:26 +03:00
mount-util: shorten the loop a bit (#7545)
The loop preparation and part of the loop contents are actually the same, let's merge this. Also, it's so much fun tweaking around in the name_to_handle_at() code, let's do more of it with this patch! (This also adds two NULL assignments, that aren't strictly necessary. However, I figured its safer to place them in there, just in case the for() condition is changed later. After all the freeing of the handle and the invalidation of the cleanup-controller pointer to it are otherwise really far away from each other...)
This commit is contained in:
parent
a0605ddfcf
commit
93719c6b0e
@ -55,7 +55,7 @@ int name_to_handle_at_loop(
|
||||
int *ret_mnt_id,
|
||||
int flags) {
|
||||
|
||||
_cleanup_free_ struct file_handle *h;
|
||||
_cleanup_free_ struct file_handle *h = NULL;
|
||||
size_t n = ORIGINAL_MAX_HANDLE_SZ;
|
||||
|
||||
/* We need to invoke name_to_handle_at() in a loop, given that it might return EOVERFLOW when the specified
|
||||
@ -65,15 +65,15 @@ int name_to_handle_at_loop(
|
||||
* This improves on raw name_to_handle_at() also in one other regard: ret_handle and ret_mnt_id can be passed
|
||||
* as NULL if there's no interest in either. */
|
||||
|
||||
h = malloc0(offsetof(struct file_handle, f_handle) + n);
|
||||
if (!h)
|
||||
return -ENOMEM;
|
||||
|
||||
h->handle_bytes = n;
|
||||
|
||||
for (;;) {
|
||||
int mnt_id = -1;
|
||||
|
||||
h = malloc0(offsetof(struct file_handle, f_handle) + n);
|
||||
if (!h)
|
||||
return -ENOMEM;
|
||||
|
||||
h->handle_bytes = n;
|
||||
|
||||
if (name_to_handle_at(fd, path, h, &mnt_id, flags) >= 0) {
|
||||
|
||||
if (ret_handle) {
|
||||
@ -110,12 +110,7 @@ int name_to_handle_at_loop(
|
||||
if (offsetof(struct file_handle, f_handle) + n < n) /* check for addition overflow */
|
||||
return -EOVERFLOW;
|
||||
|
||||
free(h);
|
||||
h = malloc0(offsetof(struct file_handle, f_handle) + n);
|
||||
if (!h)
|
||||
return -ENOMEM;
|
||||
|
||||
h->handle_bytes = n;
|
||||
h = mfree(h);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user