Loading drivers/staging/bcm/Bcmchar.c +55 −43 Original line number Diff line number Diff line Loading @@ -39,6 +39,56 @@ static int bcm_handle_nvm_read_cmd(struct bcm_mini_adapter *Adapter, return STATUS_SUCCESS; } static int handle_flash2x_adapter(struct bcm_mini_adapter *Adapter, PUCHAR pReadData, struct bcm_nvm_readwrite *stNVMReadWrite) { /* * New Requirement:- * DSD section updation will be allowed in two case:- * 1. if DSD sig is present in DSD header means dongle * is ok and updation is fruitfull * 2. if point 1 failes then user buff should have * DSD sig. this point ensures that if dongle is * corrupted then user space program first modify * the DSD header with valid DSD sig so that this * as well as further write may be worthwhile. * * This restriction has been put assuming that * if DSD sig is corrupted, DSD data won't be * considered valid. */ INT Status; ULONG ulDSDMagicNumInUsrBuff = 0; Status = BcmFlash2xCorruptSig(Adapter, Adapter->eActiveDSD); if (Status == STATUS_SUCCESS) return STATUS_SUCCESS; if (((stNVMReadWrite->uiOffset + stNVMReadWrite->uiNumBytes) != Adapter->uiNVMDSDSize) || (stNVMReadWrite->uiNumBytes < SIGNATURE_SIZE)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } ulDSDMagicNumInUsrBuff = ntohl(*(PUINT)(pReadData + stNVMReadWrite->uiNumBytes - SIGNATURE_SIZE)); if (ulDSDMagicNumInUsrBuff != DSD_IMAGE_MAGIC_NUMBER) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } return STATUS_SUCCESS; } /*************************************************************** * Function - bcm_char_open() * Loading Loading @@ -1437,7 +1487,6 @@ static int bcm_char_ioctl_nvm_rw(void __user *argp, struct timeval tv0, tv1; struct bcm_ioctl_buffer IoBuffer; PUCHAR pReadData = NULL; ULONG ulDSDMagicNumInUsrBuff = 0; INT Status = STATUS_FAILURE; memset(&tv0, 0, sizeof(struct timeval)); Loading Loading @@ -1508,48 +1557,11 @@ static int bcm_char_ioctl_nvm_rw(void __user *argp, Adapter->bHeaderChangeAllowed = TRUE; if (IsFlash2x(Adapter)) { /* * New Requirement:- * DSD section updation will be allowed in two case:- * 1. if DSD sig is present in DSD header means dongle * is ok and updation is fruitfull * 2. if point 1 failes then user buff should have * DSD sig. this point ensures that if dongle is * corrupted then user space program first modify * the DSD header with valid DSD sig so that this * as well as further write may be worthwhile. * * This restriction has been put assuming that * if DSD sig is corrupted, DSD data won't be * considered valid. */ Status = BcmFlash2xCorruptSig(Adapter, Adapter->eActiveDSD); if (Status != STATUS_SUCCESS) { if (((stNVMReadWrite.uiOffset + stNVMReadWrite.uiNumBytes) != Adapter->uiNVMDSDSize) || (stNVMReadWrite.uiNumBytes < SIGNATURE_SIZE)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } ulDSDMagicNumInUsrBuff = ntohl(*(PUINT)(pReadData + stNVMReadWrite.uiNumBytes - SIGNATURE_SIZE)); if (ulDSDMagicNumInUsrBuff != DSD_IMAGE_MAGIC_NUMBER) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } } int ret = handle_flash2x_adapter(Adapter, pReadData, &stNVMReadWrite); if (ret != STATUS_SUCCESS) return ret; } Status = BeceemNVMWrite(Adapter, (PUINT)pReadData, Loading Loading
drivers/staging/bcm/Bcmchar.c +55 −43 Original line number Diff line number Diff line Loading @@ -39,6 +39,56 @@ static int bcm_handle_nvm_read_cmd(struct bcm_mini_adapter *Adapter, return STATUS_SUCCESS; } static int handle_flash2x_adapter(struct bcm_mini_adapter *Adapter, PUCHAR pReadData, struct bcm_nvm_readwrite *stNVMReadWrite) { /* * New Requirement:- * DSD section updation will be allowed in two case:- * 1. if DSD sig is present in DSD header means dongle * is ok and updation is fruitfull * 2. if point 1 failes then user buff should have * DSD sig. this point ensures that if dongle is * corrupted then user space program first modify * the DSD header with valid DSD sig so that this * as well as further write may be worthwhile. * * This restriction has been put assuming that * if DSD sig is corrupted, DSD data won't be * considered valid. */ INT Status; ULONG ulDSDMagicNumInUsrBuff = 0; Status = BcmFlash2xCorruptSig(Adapter, Adapter->eActiveDSD); if (Status == STATUS_SUCCESS) return STATUS_SUCCESS; if (((stNVMReadWrite->uiOffset + stNVMReadWrite->uiNumBytes) != Adapter->uiNVMDSDSize) || (stNVMReadWrite->uiNumBytes < SIGNATURE_SIZE)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } ulDSDMagicNumInUsrBuff = ntohl(*(PUINT)(pReadData + stNVMReadWrite->uiNumBytes - SIGNATURE_SIZE)); if (ulDSDMagicNumInUsrBuff != DSD_IMAGE_MAGIC_NUMBER) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } return STATUS_SUCCESS; } /*************************************************************** * Function - bcm_char_open() * Loading Loading @@ -1437,7 +1487,6 @@ static int bcm_char_ioctl_nvm_rw(void __user *argp, struct timeval tv0, tv1; struct bcm_ioctl_buffer IoBuffer; PUCHAR pReadData = NULL; ULONG ulDSDMagicNumInUsrBuff = 0; INT Status = STATUS_FAILURE; memset(&tv0, 0, sizeof(struct timeval)); Loading Loading @@ -1508,48 +1557,11 @@ static int bcm_char_ioctl_nvm_rw(void __user *argp, Adapter->bHeaderChangeAllowed = TRUE; if (IsFlash2x(Adapter)) { /* * New Requirement:- * DSD section updation will be allowed in two case:- * 1. if DSD sig is present in DSD header means dongle * is ok and updation is fruitfull * 2. if point 1 failes then user buff should have * DSD sig. this point ensures that if dongle is * corrupted then user space program first modify * the DSD header with valid DSD sig so that this * as well as further write may be worthwhile. * * This restriction has been put assuming that * if DSD sig is corrupted, DSD data won't be * considered valid. */ Status = BcmFlash2xCorruptSig(Adapter, Adapter->eActiveDSD); if (Status != STATUS_SUCCESS) { if (((stNVMReadWrite.uiOffset + stNVMReadWrite.uiNumBytes) != Adapter->uiNVMDSDSize) || (stNVMReadWrite.uiNumBytes < SIGNATURE_SIZE)) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } ulDSDMagicNumInUsrBuff = ntohl(*(PUINT)(pReadData + stNVMReadWrite.uiNumBytes - SIGNATURE_SIZE)); if (ulDSDMagicNumInUsrBuff != DSD_IMAGE_MAGIC_NUMBER) { BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, OSAL_DBG, DBG_LVL_ALL, "DSD Sig is present neither in Flash nor User provided Input.."); up(&Adapter->NVMRdmWrmLock); kfree(pReadData); return Status; } } int ret = handle_flash2x_adapter(Adapter, pReadData, &stNVMReadWrite); if (ret != STATUS_SUCCESS) return ret; } Status = BeceemNVMWrite(Adapter, (PUINT)pReadData, Loading