From: "Denis V. Lunev" <den@virtuozzo.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
qemu-stable@nongnu.org
Subject: Re: [PATCH 1/1] qemu-nbd: regression with arguments passing into nbd_client_thread()
Date: Thu, 27 Jul 2023 12:31:46 +0200 [thread overview]
Message-ID: <7ac6daab-3369-bd99-155f-90fccef19e6b@virtuozzo.com> (raw)
In-Reply-To: <5arr3gmamjxaev6wgwyewnc6ij2wl3oddmju5r2n6lx4rgfcoz@wejhxbmrzyon>
On 7/26/23 19:57, Eric Blake wrote:
> On Wed, Jul 26, 2023 at 04:52:47PM +0200, Denis V. Lunev wrote:
>> Unfortunately
>> commit 03b67621445d601c9cdc7dfe25812e9f19b81488
>> Author: Denis V. Lunev <den@openvz.org>
>> Date: Mon Jul 17 16:55:40 2023 +0200
>> qemu-nbd: pass structure into nbd_client_thread instead of plain char*
>> has introduced a regression. struct NbdClientOpts resides on stack inside
>> 'if' block. This specifically means that this stack space could be reused
>> once the execution will leave that block of the code.
>>
>> This means that parameters passed into nbd_client_thread could be
>> overwritten at any moment.
>>
>> The patch moves the data to the namespace of main() function effectively
>> preserving it for the whole process lifetime.
>>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> CC: Eric Blake <eblake@redhat.com>
>> CC: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
>> CC: <qemu-stable@nongnu.org>
>> ---
>> qemu-nbd.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/qemu-nbd.c b/qemu-nbd.c
>> index 5b2757920c..7a15085ade 100644
>> --- a/qemu-nbd.c
>> +++ b/qemu-nbd.c
>> @@ -589,6 +589,7 @@ int main(int argc, char **argv)
>> const char *pid_file_name = NULL;
>> const char *selinux_label = NULL;
>> BlockExportOptions *export_opts;
>> + struct NbdClientOpts opts;
>>
>> #ifdef CONFIG_POSIX
>> os_setup_early_signal_handling();
>> @@ -1145,7 +1146,7 @@ int main(int argc, char **argv)
>> if (device) {
>> #if HAVE_NBD_DEVICE
>> int ret;
>> - struct NbdClientOpts opts = {
>> + opts = (struct NbdClientOpts) {
> Does this case a compiler warning for an unused variable when
> HAVE_NBD_DEVICE is not set? If so, the solution is to also wrap the
> declaration in the same #if. I'll see if I can figure out the CI
> enough to prove (or disprove) my theory on a BSD machine which likely
> lacks HAVE_NBD_DEVICE.
>
> With that addressed, I'm fine with:
>
> Reviewed-by: Eric Blake <eblake@redhat.com>
>
> and I will queue it through my NBD tree in time for 8.1-rc2.
>
Double checked. We will have an error there as 'struct NbdClientOps'
is defined under HAVE_NBD_DEVICE only.
../qemu-nbd.c: In function ‘main’:
../qemu-nbd.c:592:26: error: storage size of ‘opts’ isn’t known
592 | struct NbdClientOpts opts;
| ^~~~
../qemu-nbd.c:592:26: warning: unused variable ‘opts’ [-Wunused-variable]
Checked with simple
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -52,7 +52,7 @@
#endif
#ifdef __linux__
-#define HAVE_NBD_DEVICE 1
+#define HAVE_NBD_DEVICE 0
#else
#define HAVE_NBD_DEVICE 0
#endif
Den
prev parent reply other threads:[~2023-07-27 11:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-26 14:52 [PATCH 1/1] qemu-nbd: regression with arguments passing into nbd_client_thread() Denis V. Lunev
2023-07-26 17:57 ` Eric Blake
2023-07-27 10:31 ` Denis V. Lunev [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7ac6daab-3369-bd99-155f-90fccef19e6b@virtuozzo.com \
--to=den@virtuozzo.com \
--cc=eblake@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
--cc=vsementsov@yandex-team.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).