staging: ced1401: fix a frame size warning
gcc/sparse complain about the following: drivers/staging/ced1401/ced_ioc.c:931:1: warning: the frame size of 4144 bytes is larger than 2048 bytes [-Wframe-larger-than=] Fix it by dynamically allocating it. Signed-off-by: Devendra Naga <devendra.aaru@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5ee60a7038
commit
5c092f41fd
1 changed files with 16 additions and 10 deletions
|
@ -913,18 +913,24 @@ int GetTransfer(DEVICE_EXTENSION * pdx, TGET_TX_BLOCK __user * pTX)
|
|||
iReturn = U14ERR_BADAREA;
|
||||
else {
|
||||
// Return the best information we have - we don't have physical addresses
|
||||
TGET_TX_BLOCK tx;
|
||||
memset(&tx, 0, sizeof(tx)); // clean out local work structure
|
||||
tx.size = pdx->rTransDef[dwIdent].dwLength;
|
||||
tx.linear = (long long)((long)pdx->rTransDef[dwIdent].lpvBuff);
|
||||
tx.avail = GET_TX_MAXENTRIES; // how many blocks we could return
|
||||
tx.used = 1; // number we actually return
|
||||
tx.entries[0].physical =
|
||||
(long long)(tx.linear + pdx->StagedOffset);
|
||||
tx.entries[0].size = tx.size;
|
||||
TGET_TX_BLOCK *tx;
|
||||
|
||||
if (copy_to_user(pTX, &tx, sizeof(tx)))
|
||||
tx = kzalloc(sizeof(*tx), GFP_KERNEL);
|
||||
if (!tx) {
|
||||
mutex_unlock(&pdx->io_mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
tx->size = pdx->rTransDef[dwIdent].dwLength;
|
||||
tx->linear = (long long)((long)pdx->rTransDef[dwIdent].lpvBuff);
|
||||
tx->avail = GET_TX_MAXENTRIES; // how many blocks we could return
|
||||
tx->used = 1; // number we actually return
|
||||
tx->entries[0].physical =
|
||||
(long long)(tx->linear + pdx->StagedOffset);
|
||||
tx->entries[0].size = tx->size;
|
||||
|
||||
if (copy_to_user(pTX, tx, sizeof(*tx)))
|
||||
iReturn = -EFAULT;
|
||||
kfree(tx);
|
||||
}
|
||||
mutex_unlock(&pdx->io_mutex);
|
||||
return iReturn;
|
||||
|
|
Loading…
Reference in a new issue