nvmesensor: fix crash caused by passthruInterface during host reboot During host power cycle or reboot, nvmesensor will crash due to the exception `org.freedesktop.DBus.Error.FileExists: File exists` and restart. The original patch forgot to remove the passthruInterface in the destructor function of NVMeControllerEnabled class. When device warm-reboot, nvmesensor will delete and recreate NVMeControllerEnabled, thus triggering this FileExists DBus error. Tested: Before the fix, nvmesensor will crash when `ipmitool chassis power cycle` After the fix, nvmesensor doesn't crash when `ipmitool chassis power cycle` Google-Bug-Id: 301320438 Change-Id: I970643b54a75d6160f9f873ca501bb69dc64d626 Signed-off-by: Jinliang Wang <jinliangw@google.com> (cherry picked from commit f2dc87e4757bc78c6adbc52069340a8ae5325114)
diff --git a/recipes-phosphor/sensors/dbus-sensors/0052-nvmesensor-add-Admin-non-data-command-passthru-DBus-.patch b/recipes-phosphor/sensors/dbus-sensors/0052-nvmesensor-add-Admin-non-data-command-passthru-DBus-.patch index e071095..8cff821 100644 --- a/recipes-phosphor/sensors/dbus-sensors/0052-nvmesensor-add-Admin-non-data-command-passthru-DBus-.patch +++ b/recipes-phosphor/sensors/dbus-sensors/0052-nvmesensor-add-Admin-non-data-command-passthru-DBus-.patch
@@ -1,4 +1,4 @@ -From 95a3e7de6ad14af09e87f8b0cbbd68b45d926fbf Mon Sep 17 00:00:00 2001 +From efaaa4f946ed652735f8fd504edf475a7786e405 Mon Sep 17 00:00:00 2001 From: Jinliang Wang <jinliangw@google.com> Date: Wed, 30 Aug 2023 15:39:30 -0700 Subject: [PATCH] nvmesensor: add Admin non data command passthru DBus @@ -33,16 +33,18 @@ Change-Id: Ibb25ffa0c4bb3c4f675dc9a027b5f86b8022fc11 Signed-off-by: Jinliang Wang <jinliangw@google.com> + +%% original patch: 0052-nvmesensor-add-Admin-non-data-command-passthru-DBus-.patch --- - src/NVMeController.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++ + src/NVMeController.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++ src/NVMeController.hpp | 6 ++++ src/NVMeIntf.hpp | 8 ++++- - src/NVMeMi.cpp | 30 +++++++++++++++++++ + src/NVMeMi.cpp | 30 ++++++++++++++++++ src/NVMeMi.hpp | 7 +++++ - 5 files changed, 118 insertions(+), 1 deletion(-) + 5 files changed, 119 insertions(+), 1 deletion(-) diff --git a/src/NVMeController.cpp b/src/NVMeController.cpp -index 215b2e4..6d96417 100644 +index 215b2e4..23cd04f 100644 --- a/src/NVMeController.cpp +++ b/src/NVMeController.cpp @@ -81,6 +81,26 @@ void NVMeControllerEnabled::init() @@ -72,7 +74,15 @@ securityInterface = objServer.add_interface( path, "xyz.openbmc_project.Inventory.Item.StorageControllerSecurity"); -@@ -459,6 +479,54 @@ std::vector<uint8_t> NVMeControllerEnabled::securityReceiveMethod( +@@ -332,6 +352,7 @@ void NVMeControllerEnabled::firmwareDownloadAsync(std::string pathToImage) + NVMeControllerEnabled::~NVMeControllerEnabled() + { + objServer.remove_interface(securityInterface); ++ objServer.remove_interface(passthruInterface); + NVMeAdmin::emit_removed(); + StorageController::emit_removed(); + } +@@ -459,6 +480,54 @@ std::vector<uint8_t> NVMeControllerEnabled::securityReceiveMethod( return data; } @@ -225,5 +235,5 @@ // the transfer size for nvme mi messages. // define in github.com/linux-nvme/libnvme/blob/master/src/nvme/mi.c -- -2.42.0.283.g2d96d420d3-goog +2.42.0.515.g380fc7ccd1-goog