scsi: target: tcmu: Allocate zeroed pages for data area
authorBodo Stroesser <bostroesser@gmail.com>
Wed, 13 Oct 2021 17:16:06 +0000 (19:16 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Oct 2021 02:38:35 +0000 (22:38 -0400)
Tcmu populates the data area (used for communication with userspace) with
pages that are allocated by calling alloc_page(GFP_NOIO).  Therefore
previous content of the allocated pages is exposed to user space. Avoid
this by adding __GFP_ZERO flag.

Zeroing the pages does (nearly) not affect tcmu throughput, because
allocated pages are re-used for the data transfers of later SCSI cmds.

Link: https://lore.kernel.org/r/20211013171606.25197-1-bostroesser@gmail.com
Signed-off-by: Bodo Stroesser <bostroesser@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_user.c

index dc220fa..7b2a89a 100644 (file)
@@ -523,8 +523,8 @@ static inline int tcmu_get_empty_block(struct tcmu_dev *udev,
        rcu_read_unlock();
 
        for (i = cnt; i < page_cnt; i++) {
-               /* try to get new page from the mm */
-               page = alloc_page(GFP_NOIO);
+               /* try to get new zeroed page from the mm */
+               page = alloc_page(GFP_NOIO | __GFP_ZERO);
                if (!page)
                        break;