diff --git a/support/platform/include/can/can_service.h b/support/platform/include/can/can_service.h index 79fc89ca8d2a501694a657abbd8c8186a104e48f..eaf59b7bd417c092a915615547142c4ad41ebc60 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 600673c9747c11eb05d914581a9ad5e2cc921e4c..f4b969980036e01bb6b86489e1028cef3c70b217 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 4b003e223cc089fb03bf7c84166502fb4375865d..59e563d6512eab76b5d998a13826d213f2180328 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 ac85a3724b7bb0f6d25e094928be88bf5e8fe35a..a393ae44eaee3555695478ecaa0e1e479582d5c8 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));