diff --git a/drivers/block/tegra_oops_virt_storage/tegra_hv_vblk_oops.c b/drivers/block/tegra_oops_virt_storage/tegra_hv_vblk_oops.c index 760783c6..408a1977 100644 --- a/drivers/block/tegra_oops_virt_storage/tegra_hv_vblk_oops.c +++ b/drivers/block/tegra_oops_virt_storage/tegra_hv_vblk_oops.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ #include @@ -468,6 +468,7 @@ static void setup_device(struct vblk_dev *vblkdev) tegra_hv_mempool_unreserve(vblkdev->ivmk); return; } + memset(vblkdev->shared_buffer, 0, ivmk->size); max_requests = ((vblkdev->ivmk->size) / max_io_bytes); @@ -669,6 +670,8 @@ static int vblk_oops_get_configinfo(struct vblk_dev *vblkdev) dev_err(vblkdev->device, "allocate buffer failed\n"); return -ENOMEM; } + memset(vblkdev->ufs_buf, 0, + PAGE_SIZE << (get_order(vblkdev_oops->pstore_kmsg_size))); vblkdev->ufs_iova = dma_map_single(vblkdev->device, vblkdev->ufs_buf, vblkdev_oops->pstore_kmsg_size, DMA_BIDIRECTIONAL); if (dma_mapping_error(vblkdev->device, vblkdev->ufs_iova)) { diff --git a/drivers/block/tegra_virt_storage/tegra_hv_mmc.c b/drivers/block/tegra_virt_storage/tegra_hv_mmc.c index 18bbc005..34b22a8b 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_mmc.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_mmc.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-FileCopyrightText: Copyright (c) 2022-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. #include /* printk() */ #include /* kmalloc() */ @@ -36,7 +36,7 @@ int vblk_prep_mmc_multi_ioc(struct vblk_dev *vblkdev, uint8_t *tmpaddr; void *ioctl_buf; - ioctl_buf = vmalloc(ioctl_bytes); + ioctl_buf = vzalloc(ioctl_bytes); if (ioctl_buf == NULL) return -ENOMEM; diff --git a/drivers/block/tegra_virt_storage/tegra_hv_scsi.c b/drivers/block/tegra_virt_storage/tegra_hv_scsi.c index 6686298e..c948ec0c 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_scsi.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_scsi.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * Copyright (c) 2022-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ #include @@ -44,7 +44,7 @@ int vblk_prep_sg_io(struct vblk_dev *vblkdev, uint32_t alignment_add; uint32_t temp_sum; - hp = kmalloc(header_len, GFP_KERNEL); + hp = kzalloc(header_len, GFP_KERNEL); if (hp == NULL) { return -ENOMEM; } @@ -133,7 +133,7 @@ int vblk_prep_sg_io(struct vblk_dev *vblkdev, goto free_hp; } - ioctl_buf = kmalloc(ioctl_len, GFP_KERNEL); + ioctl_buf = kzalloc(ioctl_len, GFP_KERNEL); if (ioctl_buf == NULL) { err = -ENOMEM; goto free_hp; @@ -240,7 +240,7 @@ int vblk_complete_sg_io(struct vblk_dev *vblkdev, goto exit; } - hp = kmalloc(header_len, GFP_KERNEL); + hp = kzalloc(header_len, GFP_KERNEL); if (hp == NULL) { return -ENOMEM; } diff --git a/drivers/block/tegra_virt_storage/tegra_hv_ufs.c b/drivers/block/tegra_virt_storage/tegra_hv_ufs.c index 8c88cedc..6468e97f 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_ufs.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_ufs.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-FileCopyrightText: Copyright (c) 2022-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. #include /* kmalloc() */ #include /* error codes */ @@ -146,7 +146,7 @@ int vblk_prep_ufs_combo_ioc(struct vblk_dev *vblkdev, size_t data_len = 0; bool w_flag = false; - ioctl_buf = vmalloc(ioctl_bytes); + ioctl_buf = vzalloc(ioctl_bytes); if (ioctl_buf == NULL) return -ENOMEM; diff --git a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c index 7382c6e6..b0c805b1 100644 --- a/drivers/block/tegra_virt_storage/tegra_hv_vblk.c +++ b/drivers/block/tegra_virt_storage/tegra_hv_vblk.c @@ -793,7 +793,7 @@ static blk_status_t vblk_request(struct blk_mq_hw_ctx *hctx, blk_mq_start_request(req); /* malloc for req list entry */ - entry = kmalloc(sizeof(struct req_entry), GFP_ATOMIC); + entry = kzalloc(sizeof(struct req_entry), GFP_ATOMIC); if (entry == NULL) { dev_err(vblkdev->device, "Failed to allocate memory\n"); return BLK_STS_IOERR; @@ -1548,6 +1548,7 @@ static void setup_device(struct vblk_dev *vblkdev) tegra_hv_mempool_unreserve(vblkdev->ivmk); return; } + memset(vblkdev->shared_buffer, 0, ivmk->size); } /* If IOVA feature is enabled for virt partition, then set max_requests diff --git a/drivers/mtd/devices/tegra_hv_mtd.c b/drivers/mtd/devices/tegra_hv_mtd.c index b221b8f2..e3f7429c 100644 --- a/drivers/mtd/devices/tegra_hv_mtd.c +++ b/drivers/mtd/devices/tegra_hv_mtd.c @@ -375,8 +375,6 @@ static int tegra_virt_mtd_suspend(struct device *dev) if (vmtddev->is_setup) { mutex_lock(&vmtddev->lock); disable_irq(vmtddev->ivck->irq); - /* Reset the channel */ - tegra_hv_ivc_channel_reset(vmtddev->ivck); } return 0; } @@ -751,6 +749,7 @@ static int tegra_virt_mtd_probe(struct platform_device *pdev) ret = -ENOMEM; goto free_mempool; } + memset(vmtddev->shared_buffer, 0, ivmk->size); if (vmtddev->ivck->frame_size < sizeof(struct vs_request)) { dev_err(dev, "Frame size %d less than ivc_req %ld!\n", @@ -760,7 +759,7 @@ static int tegra_virt_mtd_probe(struct platform_device *pdev) goto free_mempool; } - vmtddev->cmd_frame = devm_kmalloc(vmtddev->device, + vmtddev->cmd_frame = devm_kzalloc(vmtddev->device, vmtddev->ivck->frame_size, GFP_KERNEL); if (vmtddev->cmd_frame == NULL) { ret = -ENOMEM;