diff options
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_replic.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_replic.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_replic.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_replic.c index ee82f73..7f84080 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_replic.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_replic.c @@ -380,11 +380,10 @@ static t_Error AllocMember(t_FmPcdFrmReplicGroup *p_ReplicGroup) (t_AdOfTypeResult*)FM_MURAM_AllocMem(h_Muram, FM_PCD_CC_AD_ENTRY_SIZE, FM_PCD_CC_AD_TABLE_ALIGN); + if (!p_CurrentMember->p_MemberAd) - { - XX_Free(p_CurrentMember); RETURN_ERROR(MAJOR, E_NO_MEMORY, ("member AD table")); - } + IOMemSet32((uint8_t*)p_CurrentMember->p_MemberAd, 0, FM_PCD_CC_AD_ENTRY_SIZE); /* Add the new member to the available members list */ @@ -592,6 +591,7 @@ static void DeleteGroup(t_FmPcdFrmReplicGroup *p_ReplicGroup) /* free the replicator group */ XX_Free(p_ReplicGroup); + p_ReplicGroup = NULL; } } @@ -833,8 +833,13 @@ t_Error FM_PCD_FrmReplicAddMember(t_Handle h_ReplicGroup, /* group lock */ err = FrmReplicGroupTryLock(p_ReplicGroup); - if (GET_ERROR_TYPE(err) == E_BUSY) - return ERROR_CODE(E_BUSY); + if (err) + { + if (GET_ERROR_TYPE(err) == E_BUSY) + return ERROR_CODE(E_BUSY); + else + RETURN_ERROR(MAJOR, err, ("try lock in Add member")); + } if (memberIndex > p_ReplicGroup->numOfEntries) { @@ -949,8 +954,13 @@ t_Error FM_PCD_FrmReplicRemoveMember(t_Handle h_ReplicGroup, /* lock */ err = FrmReplicGroupTryLock(p_ReplicGroup); - if (GET_ERROR_TYPE(err) == E_BUSY) - return ERROR_CODE(E_BUSY); + if (err) + { + if (GET_ERROR_TYPE(err) == E_BUSY) + return ERROR_CODE(E_BUSY); + else + RETURN_ERROR(MAJOR, err, ("try lock in Remove member")); + } if (memberIndex >= p_ReplicGroup->numOfEntries) RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("member index to remove")); |