block: fix aio_flush segfaults for read-only protocols (e.g. curl)
Not all block format drivers expose an io_flush method (reasonable for read-only protocols), so calling io_flush there will immediately segfault. Fix by checking for the method's existence before calling it. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									81a204e443
								
							
						
					
					
						commit
						c53a7285b4
					
				
							
								
								
									
										4
									
								
								aio.c
								
								
								
								
							
							
						
						
									
										4
									
								
								aio.c
								
								
								
								
							| 
						 | 
					@ -113,7 +113,9 @@ void qemu_aio_flush(void)
 | 
				
			||||||
        qemu_aio_wait();
 | 
					        qemu_aio_wait();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        QLIST_FOREACH(node, &aio_handlers, node) {
 | 
					        QLIST_FOREACH(node, &aio_handlers, node) {
 | 
				
			||||||
            ret |= node->io_flush(node->opaque);
 | 
					            if (node->io_flush) {
 | 
				
			||||||
 | 
					                ret |= node->io_flush(node->opaque);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } while (qemu_bh_poll() || ret > 0);
 | 
					    } while (qemu_bh_poll() || ret > 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue