Files
openwrt-kernel5.4-nss-qsdk10.0/package/qca/qca-nss-crypto/patches/200-fix-NULL-pointer-exception.patch
2025-06-24 13:14:22 +02:00

58 lines
2.1 KiB
Diff

--- a/v1.0/src/nss_crypto_if.c
+++ b/v1.0/src/nss_crypto_if.c
@@ -370,15 +370,16 @@ void nss_crypto_transform_done(struct ne
struct nss_crypto_buf *buf = (struct nss_crypto_buf *)skb->data;
struct nss_crypto_buf_node *entry;
void *addr;
+ struct device *cdev = gbl_crypto_ctrl.eng[0].dev;
if (likely(buf->data_in == buf->data_out)) {
- dma_unmap_single(NULL, buf->data_in, buf->data_len, DMA_BIDIRECTIONAL);
+ dma_unmap_single(cdev, buf->data_in, buf->data_len, DMA_BIDIRECTIONAL);
} else {
- dma_unmap_single(NULL, buf->data_in, buf->data_len, DMA_TO_DEVICE);
- dma_unmap_single(NULL, buf->data_out, buf->data_len, DMA_FROM_DEVICE);
+ dma_unmap_single(cdev, buf->data_in, buf->data_len, DMA_TO_DEVICE);
+ dma_unmap_single(cdev, buf->data_out, buf->data_len, DMA_FROM_DEVICE);
}
- dma_unmap_single(NULL, buf->iv_addr, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
+ dma_unmap_single(cdev, buf->iv_addr, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
addr = phys_to_virt(buf->iv_addr);
entry = container_of(addr, struct nss_crypto_buf_node, results);
@@ -531,6 +532,7 @@ nss_crypto_status_t nss_crypto_transform
uint32_t paddr;
void *vaddr;
size_t len;
+ struct device *cdev = gbl_crypto_ctrl.eng[0].dev;
if (!buf->cb_fn) {
nss_crypto_warn("%p:no buffer(%p) callback present\n", crypto, buf);
@@ -544,7 +546,7 @@ nss_crypto_status_t nss_crypto_transform
*/
vaddr = (void *)buf->data_in;
len = buf->data_len;
- paddr = dma_map_single(NULL, vaddr, len, DMA_TO_DEVICE);
+ paddr = dma_map_single(cdev, vaddr, len, DMA_TO_DEVICE);
buf->data_in = paddr;
if (vaddr == (void *)buf->data_out) {
@@ -555,14 +557,14 @@ nss_crypto_status_t nss_crypto_transform
*/
vaddr = (void *)buf->data_out;
len = buf->data_len;
- paddr = dma_map_single(NULL, vaddr, len, DMA_FROM_DEVICE);
+ paddr = dma_map_single(cdev, vaddr, len, DMA_FROM_DEVICE);
buf->data_out = paddr;
}
/*
* We need to map the results into IV
*/
- paddr = dma_map_single(NULL, entry->results, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
+ paddr = dma_map_single(cdev, entry->results, L1_CACHE_BYTES, DMA_BIDIRECTIONAL);
buf->hash_addr = paddr;
buf->iv_addr = paddr;