fw_cfg: fix boot order bug when dynamically modified via QOM
When we dynamically modify boot order, the length of boot order will be changed, but we don't update s->files->f[i].size with new length. This casuse seabios read a wrong vale of qemu cfg file about bootorder. Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Gonglei <arei.gonglei@huawei.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									d1048bef9d
								
							
						
					
					
						commit
						f3b3766899
					
				@ -523,6 +523,7 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename,
 | 
				
			|||||||
                        void *data, size_t len)
 | 
					                        void *data, size_t len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int i, index;
 | 
					    int i, index;
 | 
				
			||||||
 | 
					    void *ptr = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert(s->files);
 | 
					    assert(s->files);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -531,8 +532,10 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < index; i++) {
 | 
					    for (i = 0; i < index; i++) {
 | 
				
			||||||
        if (strcmp(filename, s->files->f[i].name) == 0) {
 | 
					        if (strcmp(filename, s->files->f[i].name) == 0) {
 | 
				
			||||||
            return fw_cfg_modify_bytes_read(s, FW_CFG_FILE_FIRST + i,
 | 
					            ptr = fw_cfg_modify_bytes_read(s, FW_CFG_FILE_FIRST + i,
 | 
				
			||||||
                                     data, len);
 | 
					                                           data, len);
 | 
				
			||||||
 | 
					            s->files->f[i].size   = cpu_to_be32(len);
 | 
				
			||||||
 | 
					            return ptr;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /* add new one */
 | 
					    /* add new one */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user