From fb59618df27f6f86f17dfca6daf756c87ee7b8e4 Mon Sep 17 00:00:00 2001 From: yanghaizhou Date: Mon, 23 May 2022 11:03:36 +0800 Subject: [PATCH] Unlock rxbox after filter deleted Signed-off-by: yanghaizhou --- support/platform/include/can/can_service.h | 2 ++ support/platform/src/can/can_mail.c | 2 ++ support/platform/src/can/can_service.c | 7 +++++++ support/platform/test/unittest/common/hdf_can_test.cpp | 2 +- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/support/platform/include/can/can_service.h b/support/platform/include/can/can_service.h index 79fc89ca8..eaf59b7bd 100644 --- a/support/platform/include/can/can_service.h +++ b/support/platform/include/can/can_service.h @@ -24,6 +24,8 @@ enum CanIoCmd { int32_t CanServiceBind(struct HdfDeviceObject *device); +void CanServiceRelease(struct HdfDeviceObject *device); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/support/platform/src/can/can_mail.c b/support/platform/src/can/can_mail.c index 600673c97..f4b969980 100644 --- a/support/platform/src/can/can_mail.c +++ b/support/platform/src/can/can_mail.c @@ -68,6 +68,7 @@ int32_t CanRxBoxAddMsg(struct CanRxBox *rbox, struct CanMsg *cmsg) CanMsgGet(cmsg); // increase ref count before enqueue ret = PlatformQueueAddMsg(rbox->queue, pmsg); if (ret != HDF_SUCCESS) { + OsalMemFree(pmsg); CanMsgPut(cmsg); // decrase ref count if enqueue failed } return ret; @@ -175,5 +176,6 @@ int32_t CanRxBoxDelFilter(struct CanRxBox *rbox, const struct CanFilter *filter) return HDF_SUCCESS; } } + CanRxBoxUnlock(rbox); return HDF_ERR_NOT_SUPPORT; } diff --git a/support/platform/src/can/can_service.c b/support/platform/src/can/can_service.c index 4b003e223..59e563d65 100644 --- a/support/platform/src/can/can_service.c +++ b/support/platform/src/can/can_service.c @@ -54,3 +54,10 @@ int32_t CanServiceBind(struct HdfDeviceObject *device) device->service = service; return HDF_SUCCESS; } + +void CanServiceRelease(struct HdfDeviceObject *device) +{ + if (device != NULL && device->service != NULL) { + OsalMemFree(device->service); + } +} diff --git a/support/platform/test/unittest/common/hdf_can_test.cpp b/support/platform/test/unittest/common/hdf_can_test.cpp index ac85a3724..a393ae44e 100644 --- a/support/platform/test/unittest/common/hdf_can_test.cpp +++ b/support/platform/test/unittest/common/hdf_can_test.cpp @@ -95,7 +95,7 @@ HWTEST_F(HdfCanTest, HdfCanTest004_AddAndDelFilter, TestSize.Level1) * @tc.type: FUNC * @tc.require: NA */ -HWTEST_F(HdfCanTest, HdfCanTest005_AddNultiFilters, TestSize.Level1) +HWTEST_F(HdfCanTest, HdfCanTest005_AddMultiFilters, TestSize.Level1) { struct HdfTestMsg msg = {TEST_PAL_CAN_TYPE, CAN_TEST_ADD_MULTI_FILTER, -1}; EXPECT_EQ(0, HdfTestSendMsgToService(&msg)); -- Gitee