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