qcow2: Free allocated L2 cluster on error
If an error occurs in l2_allocate, the allocated (but unused) L2 cluster should be freed. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Benoit Canet <benoit@irqsave.net> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									fda74f826b
								
							
						
					
					
						commit
						e3b21ef9e0
					
				| 
						 | 
					@ -273,6 +273,10 @@ fail:
 | 
				
			||||||
        qcow2_cache_put(bs, s->l2_table_cache, (void**) table);
 | 
					        qcow2_cache_put(bs, s->l2_table_cache, (void**) table);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    s->l1_table[l1_index] = old_l2_offset;
 | 
					    s->l1_table[l1_index] = old_l2_offset;
 | 
				
			||||||
 | 
					    if (l2_offset > 0) {
 | 
				
			||||||
 | 
					        qcow2_free_clusters(bs, l2_offset, s->l2_size * sizeof(uint64_t),
 | 
				
			||||||
 | 
					                            QCOW2_DISCARD_ALWAYS);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue