qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] vl: defuse PID file path resolve error


From: Fiona Ebner
Subject: Re: [PATCH v2] vl: defuse PID file path resolve error
Date: Wed, 15 Mar 2023 09:52:20 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0

Am 24.01.23 um 14:55 schrieb Fiona Ebner:
> Am 31.10.22 um 10:47 schrieb Fiona Ebner:
>> Commit 85c4bf8aa6 ("vl: Unlink absolute PID file path") introduced a
>> critical error when the PID file path cannot be resolved. Before this
>> commit, it was possible to invoke QEMU when the PID file was a file
>> created with mkstemp that was already unlinked at the time of the
>> invocation. There might be other similar scenarios.
>>
>> It should not be a critical error when the PID file unlink notifier
>> can't be registered, because the path can't be resolved. If the file
>> is already gone from QEMU's perspective, silently ignore the error.
>> Otherwise, only print a warning.
>>
>> Fixes: 85c4bf8aa6 ("vl: Unlink absolute PID file path")
>> Reported-by: Dominik Csapak <d.csapak@proxmox.com>
>> Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
>> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
>> ---
>>
>> v1 -> v2:
>>     * Ignore error if errno == ENOENT.
>>
>>  softmmu/vl.c | 9 +++++----
>>  1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/softmmu/vl.c b/softmmu/vl.c
>> index b464da25bc..cf2c591ba5 100644
>> --- a/softmmu/vl.c
>> +++ b/softmmu/vl.c
>> @@ -2432,10 +2432,11 @@ static void qemu_maybe_daemonize(const char 
>> *pid_file)
>>  
>>          pid_file_realpath = g_malloc0(PATH_MAX);
>>          if (!realpath(pid_file, pid_file_realpath)) {
>> -            error_report("cannot resolve PID file path: %s: %s",
>> -                         pid_file, strerror(errno));
>> -            unlink(pid_file);
>> -            exit(1);
>> +            if (errno != ENOENT) {
>> +                warn_report("not removing PID file on exit: cannot resolve 
>> PID "
>> +                            "file path: %s: %s", pid_file, strerror(errno));
>> +            }
>> +            return;
>>          }
>>  
>>          qemu_unlink_pidfile_notifier = (struct UnlinkPidfileNotifier) {
> 
> Ping
> 

Ping again. While it's not a critical patch, it's also not a big one :)

Best Regards,
Fiona




reply via email to

[Prev in Thread] Current Thread [Next in Thread]