diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2014-04-10 05:36:13 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-04-16 14:41:44 -0400 |
commit | d21bb45081484b95fb0c80f1afa492a7275689c2 (patch) | |
tree | b654756bf0b4e5658b62880093fc68a0124d06a3 | |
parent | ef35a4f44bdc6f8c9f99a561fd1fd318305a4d98 (diff) |
staging: unisys: use after free in error messages
We dereference "bus" when we report the error so we have to move the
kfree() down a couple lines.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/unisys/uislib/uislib.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/staging/unisys/uislib/uislib.c b/drivers/staging/unisys/uislib/uislib.c index 8ea9c46e56ae..3152a2180c45 100644 --- a/drivers/staging/unisys/uislib/uislib.c +++ b/drivers/staging/unisys/uislib/uislib.c | |||
@@ -381,17 +381,17 @@ create_bus(CONTROLVM_MESSAGE *msg, char *buf) | |||
381 | cmd.add_vbus.busTypeGuid = msg->cmd.createBus.busDataTypeGuid; | 381 | cmd.add_vbus.busTypeGuid = msg->cmd.createBus.busDataTypeGuid; |
382 | cmd.add_vbus.busInstGuid = msg->cmd.createBus.busInstGuid; | 382 | cmd.add_vbus.busInstGuid = msg->cmd.createBus.busInstGuid; |
383 | if (!VirtControlChanFunc) { | 383 | if (!VirtControlChanFunc) { |
384 | kfree(bus); | ||
385 | LOGERR("CONTROLVM_BUS_CREATE Failed: virtpci callback not registered."); | 384 | LOGERR("CONTROLVM_BUS_CREATE Failed: virtpci callback not registered."); |
386 | POSTCODE_LINUX_3(BUS_CREATE_FAILURE_PC, bus->busNo, | 385 | POSTCODE_LINUX_3(BUS_CREATE_FAILURE_PC, bus->busNo, |
387 | POSTCODE_SEVERITY_ERR); | 386 | POSTCODE_SEVERITY_ERR); |
387 | kfree(bus); | ||
388 | return CONTROLVM_RESP_ERROR_VIRTPCI_DRIVER_FAILURE; | 388 | return CONTROLVM_RESP_ERROR_VIRTPCI_DRIVER_FAILURE; |
389 | } | 389 | } |
390 | if (!VirtControlChanFunc(&cmd)) { | 390 | if (!VirtControlChanFunc(&cmd)) { |
391 | kfree(bus); | ||
392 | LOGERR("CONTROLVM_BUS_CREATE Failed: virtpci GUEST_ADD_VBUS returned error."); | 391 | LOGERR("CONTROLVM_BUS_CREATE Failed: virtpci GUEST_ADD_VBUS returned error."); |
393 | POSTCODE_LINUX_3(BUS_CREATE_FAILURE_PC, bus->busNo, | 392 | POSTCODE_LINUX_3(BUS_CREATE_FAILURE_PC, bus->busNo, |
394 | POSTCODE_SEVERITY_ERR); | 393 | POSTCODE_SEVERITY_ERR); |
394 | kfree(bus); | ||
395 | return | 395 | return |
396 | CONTROLVM_RESP_ERROR_VIRTPCI_DRIVER_CALLBACK_ERROR; | 396 | CONTROLVM_RESP_ERROR_VIRTPCI_DRIVER_CALLBACK_ERROR; |
397 | } | 397 | } |