tpm-emulator: fix error handling
The previous patch cleaned up a bit error handling, and exposed an existing bug: error_report_err() could be called with a NULL error. Instead, make tpm_emulator_set_locality() set the error. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									0e43b7e61c
								
							
						
					
					
						commit
						c106ede9c8
					
				@ -141,7 +141,8 @@ static int tpm_emulator_unix_tx_bufs(TPMEmulator *tpm_emu,
 | 
				
			|||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int tpm_emulator_set_locality(TPMEmulator *tpm_emu, uint8_t locty_number)
 | 
					static int tpm_emulator_set_locality(TPMEmulator *tpm_emu, uint8_t locty_number,
 | 
				
			||||||
 | 
					                                     Error **errp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ptm_loc loc;
 | 
					    ptm_loc loc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -155,14 +156,14 @@ static int tpm_emulator_set_locality(TPMEmulator *tpm_emu, uint8_t locty_number)
 | 
				
			|||||||
    loc.u.req.loc = locty_number;
 | 
					    loc.u.req.loc = locty_number;
 | 
				
			||||||
    if (tpm_emulator_ctrlcmd(&tpm_emu->ctrl_chr, CMD_SET_LOCALITY, &loc,
 | 
					    if (tpm_emulator_ctrlcmd(&tpm_emu->ctrl_chr, CMD_SET_LOCALITY, &loc,
 | 
				
			||||||
                             sizeof(loc), sizeof(loc)) < 0) {
 | 
					                             sizeof(loc), sizeof(loc)) < 0) {
 | 
				
			||||||
        error_report("tpm-emulator: could not set locality : %s",
 | 
					        error_setg(errp, "tpm-emulator: could not set locality : %s",
 | 
				
			||||||
                   strerror(errno));
 | 
					                   strerror(errno));
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    loc.u.resp.tpm_result = be32_to_cpu(loc.u.resp.tpm_result);
 | 
					    loc.u.resp.tpm_result = be32_to_cpu(loc.u.resp.tpm_result);
 | 
				
			||||||
    if (loc.u.resp.tpm_result != 0) {
 | 
					    if (loc.u.resp.tpm_result != 0) {
 | 
				
			||||||
        error_report("tpm-emulator: TPM result for set locality : 0x%x",
 | 
					        error_setg(errp, "tpm-emulator: TPM result for set locality : 0x%x",
 | 
				
			||||||
                   loc.u.resp.tpm_result);
 | 
					                   loc.u.resp.tpm_result);
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -179,7 +180,8 @@ static void tpm_emulator_handle_request(TPMBackend *tb, TPMBackendCmd *cmd)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    DPRINTF("processing TPM command");
 | 
					    DPRINTF("processing TPM command");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (tpm_emulator_set_locality(tpm_emu, tb->tpm_state->locty_number) < 0) {
 | 
					    if (tpm_emulator_set_locality(tpm_emu,
 | 
				
			||||||
 | 
					                                  tb->tpm_state->locty_number, &err) < 0) {
 | 
				
			||||||
        goto error;
 | 
					        goto error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user