io: remove mistaken call to object_ref on QTask
The QTask struct is just a standalone struct, not a QOM Object, so calling object_ref() on it is not appropriate. This results in mangling the 'destroy' field in the QTask struct, causing the later call to qtask_free() to try to call the function at address 0x1, with predictably segfault happy results. There is in fact no need for ref counting with QTask, as the call to qtask_abort() or qtask_complete() will automatically free associated memory. This fixes the crash shown in https://bugs.launchpad.net/qemu/+bug/1589923 Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
		
							parent
							
								
									8b54a6a6c6
								
							
						
					
					
						commit
						bc35d51077
					
				| 
						 | 
				
			
			@ -317,14 +317,13 @@ static gboolean qio_channel_websock_handshake_io(QIOChannel *ioc,
 | 
			
		|||
        return TRUE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    object_ref(OBJECT(task));
 | 
			
		||||
    trace_qio_channel_websock_handshake_reply(ioc);
 | 
			
		||||
    qio_channel_add_watch(
 | 
			
		||||
        wioc->master,
 | 
			
		||||
        G_IO_OUT,
 | 
			
		||||
        qio_channel_websock_handshake_send,
 | 
			
		||||
        task,
 | 
			
		||||
        (GDestroyNotify)object_unref);
 | 
			
		||||
        NULL);
 | 
			
		||||
    return FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue