crypto: caam - fix offset field in hw sg entries
The offset field is 13 bits wide; make sure we don't overwrite more than that in the caam hardware scatter gather structure. Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com> Signed-off-by: Horia Geantă <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
d54fc90cc9
commit
bd52f1c232
|
@ -20,7 +20,7 @@
|
|||
#define SEC4_SG_BPID_MASK 0x000000ff
|
||||
#define SEC4_SG_BPID_SHIFT 16
|
||||
#define SEC4_SG_LEN_MASK 0x3fffffff /* Excludes EXT and FINAL */
|
||||
#define SEC4_SG_OFFS_MASK 0x00001fff
|
||||
#define SEC4_SG_OFFSET_MASK 0x00001fff
|
||||
|
||||
struct sec4_sg_entry {
|
||||
#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_IMX
|
||||
|
|
|
@ -11,12 +11,12 @@ struct sec4_sg_entry;
|
|||
* convert single dma address to h/w link table format
|
||||
*/
|
||||
static inline void dma_to_sec4_sg_one(struct sec4_sg_entry *sec4_sg_ptr,
|
||||
dma_addr_t dma, u32 len, u32 offset)
|
||||
dma_addr_t dma, u32 len, u16 offset)
|
||||
{
|
||||
sec4_sg_ptr->ptr = dma;
|
||||
sec4_sg_ptr->len = len;
|
||||
sec4_sg_ptr->buf_pool_id = 0;
|
||||
sec4_sg_ptr->offset = offset;
|
||||
sec4_sg_ptr->offset = offset & SEC4_SG_OFFSET_MASK;
|
||||
#ifdef DEBUG
|
||||
print_hex_dump(KERN_ERR, "sec4_sg_ptr@: ",
|
||||
DUMP_PREFIX_ADDRESS, 16, 4, sec4_sg_ptr,
|
||||
|
@ -30,7 +30,7 @@ static inline void dma_to_sec4_sg_one(struct sec4_sg_entry *sec4_sg_ptr,
|
|||
*/
|
||||
static inline struct sec4_sg_entry *
|
||||
sg_to_sec4_sg(struct scatterlist *sg, int sg_count,
|
||||
struct sec4_sg_entry *sec4_sg_ptr, u32 offset)
|
||||
struct sec4_sg_entry *sec4_sg_ptr, u16 offset)
|
||||
{
|
||||
while (sg_count) {
|
||||
dma_to_sec4_sg_one(sec4_sg_ptr, sg_dma_address(sg),
|
||||
|
@ -48,7 +48,7 @@ sg_to_sec4_sg(struct scatterlist *sg, int sg_count,
|
|||
*/
|
||||
static inline void sg_to_sec4_sg_last(struct scatterlist *sg, int sg_count,
|
||||
struct sec4_sg_entry *sec4_sg_ptr,
|
||||
u32 offset)
|
||||
u16 offset)
|
||||
{
|
||||
sec4_sg_ptr = sg_to_sec4_sg(sg, sg_count, sec4_sg_ptr, offset);
|
||||
sec4_sg_ptr->len |= SEC4_SG_LEN_FIN;
|
||||
|
|
Loading…
Reference in New Issue