qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed.
@ 2010-10-06 12:48 Gerd Hoffmann
  2010-10-06 14:42 ` Stefan Hajnoczi
  2010-10-06 17:58 ` Venkateswararao Jujjuri (JV)
  0 siblings, 2 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2010-10-06 12:48 UTC (permalink / raw)
  To: qemu-devel@nongnu.org

  Hi,

$subject says all ...

Triggered by mounting the filesystem.  F14 guest.

(gdb) #0  0x000000399f4329c5 in raise () from /lib64/libc.so.6
#1  0x000000399f4341a5 in abort () from /lib64/libc.so.6
#2  0x000000399f42b955 in __assert_fail () from /lib64/libc.so.6
#3  0x00000000004209a4 in v9fs_string_sprintf (str=0x1bc9560, 
fmt=0x5d31e4 "%s %lu")
     at /home/kraxel/projects/qemu/hw/virtio-9p.c:401
#4  0x0000000000423bcb in stat_to_v9stat (s=0x7f524d3ef010, 
name=0x1baf658, stbuf=0x1bc9588,
     v9stat=0x1bc94f0) at /home/kraxel/projects/qemu/hw/virtio-9p.c:1039
#5  0x0000000000423d27 in v9fs_stat_post_lstat (s=0x7f524d3ef010, 
pdu=<value optimized out>)
     at /home/kraxel/projects/qemu/hw/virtio-9p.c:1229
#6  v9fs_stat (s=0x7f524d3ef010, pdu=<value optimized out>)
     at /home/kraxel/projects/qemu/hw/virtio-9p.c:1263
#7  0x000000000041f8a8 in submit_pdu (vdev=0x7f524d3ef010, vq=0x1aed390)
     at /home/kraxel/projects/qemu/hw/virtio-9p.c:3452
#8  handle_9p_output (vdev=0x7f524d3ef010, vq=0x1aed390)
     at /home/kraxel/projects/qemu/hw/virtio-9p.c:3474
#9  0x0000000000428e66 in kvm_handle_io (env=0x1665800) at 
/home/kraxel/projects/qemu/kvm-all.c:741
#10 kvm_cpu_exec (env=0x1665800) at /home/kraxel/projects/qemu/kvm-all.c:882
#11 0x00000000004d596f in cpu_x86_exec (env1=<value optimized out>)
     at /home/kraxel/projects/qemu/cpu-exec.c:338
#12 0x000000000040b468 in qemu_cpu_exec () at 
/home/kraxel/projects/qemu/cpus.c:767
#13 cpu_exec_all () at /home/kraxel/projects/qemu/cpus.c:795
#14 0x0000000000561d35 in main_loop (argc=<value optimized out>, 
argv=<value optimized out>,
     envp=<value optimized out>) at /home/kraxel/projects/qemu/vl.c:1331
#15 main (argc=<value optimized out>, argv=<value optimized out>, 
envp=<value optimized out>)
     at /home/kraxel/projects/qemu/vl.c:3036


cheers,
   Gerd

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed.
  2010-10-06 12:48 [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed Gerd Hoffmann
@ 2010-10-06 14:42 ` Stefan Hajnoczi
  2010-10-06 18:25   ` Venkateswararao Jujjuri (JV)
  2010-10-06 17:58 ` Venkateswararao Jujjuri (JV)
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Hajnoczi @ 2010-10-06 14:42 UTC (permalink / raw)
  To: qemu-devel@nongnu.org; +Cc: Gerd Hoffmann

On a related note, there are more uses of BUG_ON() in hw/virtio-9p.c
which can be triggered from the guest:

submit_pdu():
    BUG_ON(pdu->id >= ARRAY_SIZE(pdu_handlers));
    BUG_ON(handler == NULL);

handle_9p_output():
        BUG_ON(pdu->elem.out_num == 0 || pdu->elem.in_num == 0);
        BUG_ON(pdu->elem.out_sg[0].iov_len < 7);

These should be handled by skipping the bad virtqueue element.  We
could also reset the device but that may freak out the (bad) guest.

Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed.
  2010-10-06 12:48 [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed Gerd Hoffmann
  2010-10-06 14:42 ` Stefan Hajnoczi
@ 2010-10-06 17:58 ` Venkateswararao Jujjuri (JV)
  2010-10-06 20:26   ` Venkateswararao Jujjuri (JV)
  1 sibling, 1 reply; 5+ messages in thread
From: Venkateswararao Jujjuri (JV) @ 2010-10-06 17:58 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: qemu-devel@nongnu.org

On 10/6/2010 5:48 AM, Gerd Hoffmann wrote:
>  Hi,
> 
> $subject says all ...
> 
> Triggered by mounting the filesystem.  F14 guest.
> 

Ah. This is introduced by c9ba47dc5d8679efa4d5425aa27e0f8132920fb5
v9fs_string_sprintf() doesn't support %lu. I will send a patch to fix this shortly.

- JV

> (gdb) #0  0x000000399f4329c5 in raise () from /lib64/libc.so.6
> #1  0x000000399f4341a5 in abort () from /lib64/libc.so.6
> #2  0x000000399f42b955 in __assert_fail () from /lib64/libc.so.6
> #3  0x00000000004209a4 in v9fs_string_sprintf (str=0x1bc9560, fmt=0x5d31e4 "%s
> %lu")
>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:401
> #4  0x0000000000423bcb in stat_to_v9stat (s=0x7f524d3ef010, name=0x1baf658,
> stbuf=0x1bc9588,
>     v9stat=0x1bc94f0) at /home/kraxel/projects/qemu/hw/virtio-9p.c:1039
> #5  0x0000000000423d27 in v9fs_stat_post_lstat (s=0x7f524d3ef010, pdu=<value
> optimized out>)
>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:1229
> #6  v9fs_stat (s=0x7f524d3ef010, pdu=<value optimized out>)
>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:1263
> #7  0x000000000041f8a8 in submit_pdu (vdev=0x7f524d3ef010, vq=0x1aed390)
>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:3452
> #8  handle_9p_output (vdev=0x7f524d3ef010, vq=0x1aed390)
>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:3474
> #9  0x0000000000428e66 in kvm_handle_io (env=0x1665800) at
> /home/kraxel/projects/qemu/kvm-all.c:741
> #10 kvm_cpu_exec (env=0x1665800) at /home/kraxel/projects/qemu/kvm-all.c:882
> #11 0x00000000004d596f in cpu_x86_exec (env1=<value optimized out>)
>     at /home/kraxel/projects/qemu/cpu-exec.c:338
> #12 0x000000000040b468 in qemu_cpu_exec () at /home/kraxel/projects/qemu/cpus.c:767
> #13 cpu_exec_all () at /home/kraxel/projects/qemu/cpus.c:795
> #14 0x0000000000561d35 in main_loop (argc=<value optimized out>, argv=<value
> optimized out>,
>     envp=<value optimized out>) at /home/kraxel/projects/qemu/vl.c:1331
> #15 main (argc=<value optimized out>, argv=<value optimized out>, envp=<value
> optimized out>)
>     at /home/kraxel/projects/qemu/vl.c:3036
> 
> 
> cheers,
>   Gerd
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed.
  2010-10-06 14:42 ` Stefan Hajnoczi
@ 2010-10-06 18:25   ` Venkateswararao Jujjuri (JV)
  0 siblings, 0 replies; 5+ messages in thread
From: Venkateswararao Jujjuri (JV) @ 2010-10-06 18:25 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel@nongnu.org, Gerd Hoffmann

On 10/6/2010 7:42 AM, Stefan Hajnoczi wrote:
> On a related note, there are more uses of BUG_ON() in hw/virtio-9p.c
> which can be triggered from the guest:
> 
> submit_pdu():
>     BUG_ON(pdu->id >= ARRAY_SIZE(pdu_handlers));
>     BUG_ON(handler == NULL);
> 
> handle_9p_output():
>         BUG_ON(pdu->elem.out_num == 0 || pdu->elem.in_num == 0);
>         BUG_ON(pdu->elem.out_sg[0].iov_len < 7);
> 

yeah.. these BUG_ONs make sense only if we "trust" the client.

> These should be handled by skipping the bad virtqueue element.  We
> could also reset the device but that may freak out the (bad) guest.

May be log an error and skip it?  Reset is not a bad idea..if we decided to punish
the client for sending something that is not acceptable. .. any comments?

- JV

> 
> Stefan
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed.
  2010-10-06 17:58 ` Venkateswararao Jujjuri (JV)
@ 2010-10-06 20:26   ` Venkateswararao Jujjuri (JV)
  0 siblings, 0 replies; 5+ messages in thread
From: Venkateswararao Jujjuri (JV) @ 2010-10-06 20:26 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: qemu-devel@nongnu.org

On 10/6/2010 10:58 AM, Venkateswararao Jujjuri (JV) wrote:
> On 10/6/2010 5:48 AM, Gerd Hoffmann wrote:
>>  Hi,
>>
>> $subject says all ...
>>
>> Triggered by mounting the filesystem.  F14 guest.
>>
> 
> Ah. This is introduced by c9ba47dc5d8679efa4d5425aa27e0f8132920fb5
> v9fs_string_sprintf() doesn't support %lu. I will send a patch to fix this shortly.


Here is the patch to fix it.

sgined-off-by: Venkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com>


diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
index 3b2d49c..1afa6d1 100644
--- a/hw/virtio-9p.c
+++ b/hw/virtio-9p.c
@@ -325,6 +325,14 @@ static int number_to_string(void *arg, char type)
         } while (num);
         break;
     }
+    case 'U': {
+        unsigned long num = *(unsigned long *)arg;
+        do {
+            ret++;
+            num = num/10;
+        } while (num);
+        break;
+    }
     default:
         printf("Number_to_string: Unknown number format\n");
         return -1;
@@ -342,6 +350,7 @@ v9fs_string_alloc_printf(char **strp, const char *fmt, va_li
     int nr_args = 0;
     char *arg_char_ptr;
     unsigned int arg_uint;
+    unsigned long arg_ulong;

     /* Find the number of %'s that denotes an argument */
     for (iter = strstr(iter, "%"); iter; iter = strstr(iter, "%")) {
@@ -367,6 +376,14 @@ v9fs_string_alloc_printf(char **strp, const char *fmt, va_l
             arg_uint = va_arg(ap2, unsigned int);
             len += number_to_string((void *)&arg_uint, 'u');
             break;
+        case 'l':
+            if (*++iter == 'u') {
+                arg_ulong = va_arg(ap2, unsigned long);
+                len += number_to_string((void *)&arg_ulong, 'U');
+            } else {
+                return -1;
+            }
+            break;
         case 's':
             arg_char_ptr = va_arg(ap2, char *);
             len += strlen(arg_char_ptr);


> 
> - JV
> 
>> (gdb) #0  0x000000399f4329c5 in raise () from /lib64/libc.so.6
>> #1  0x000000399f4341a5 in abort () from /lib64/libc.so.6
>> #2  0x000000399f42b955 in __assert_fail () from /lib64/libc.so.6
>> #3  0x00000000004209a4 in v9fs_string_sprintf (str=0x1bc9560, fmt=0x5d31e4 "%s
>> %lu")
>>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:401
>> #4  0x0000000000423bcb in stat_to_v9stat (s=0x7f524d3ef010, name=0x1baf658,
>> stbuf=0x1bc9588,
>>     v9stat=0x1bc94f0) at /home/kraxel/projects/qemu/hw/virtio-9p.c:1039
>> #5  0x0000000000423d27 in v9fs_stat_post_lstat (s=0x7f524d3ef010, pdu=<value
>> optimized out>)
>>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:1229
>> #6  v9fs_stat (s=0x7f524d3ef010, pdu=<value optimized out>)
>>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:1263
>> #7  0x000000000041f8a8 in submit_pdu (vdev=0x7f524d3ef010, vq=0x1aed390)
>>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:3452
>> #8  handle_9p_output (vdev=0x7f524d3ef010, vq=0x1aed390)
>>     at /home/kraxel/projects/qemu/hw/virtio-9p.c:3474
>> #9  0x0000000000428e66 in kvm_handle_io (env=0x1665800) at
>> /home/kraxel/projects/qemu/kvm-all.c:741
>> #10 kvm_cpu_exec (env=0x1665800) at /home/kraxel/projects/qemu/kvm-all.c:882
>> #11 0x00000000004d596f in cpu_x86_exec (env1=<value optimized out>)
>>     at /home/kraxel/projects/qemu/cpu-exec.c:338
>> #12 0x000000000040b468 in qemu_cpu_exec () at /home/kraxel/projects/qemu/cpus.c:767
>> #13 cpu_exec_all () at /home/kraxel/projects/qemu/cpus.c:795
>> #14 0x0000000000561d35 in main_loop (argc=<value optimized out>, argv=<value
>> optimized out>,
>>     envp=<value optimized out>) at /home/kraxel/projects/qemu/vl.c:1331
>> #15 main (argc=<value optimized out>, argv=<value optimized out>, envp=<value
>> optimized out>)
>>     at /home/kraxel/projects/qemu/vl.c:3036
>>
>>
>> cheers,
>>   Gerd
>>
> 
> 
> 

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-10-06 20:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-06 12:48 [Qemu-devel] virtio-9p.c:401: v9fs_string_sprintf: Assertion `!(err == -1)' failed Gerd Hoffmann
2010-10-06 14:42 ` Stefan Hajnoczi
2010-10-06 18:25   ` Venkateswararao Jujjuri (JV)
2010-10-06 17:58 ` Venkateswararao Jujjuri (JV)
2010-10-06 20:26   ` Venkateswararao Jujjuri (JV)

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).