Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'block-6.18-20251023' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux

Pull block fixes from Jens Axboe:

- Fix dma alignment for PI

- Fix selinux bogosity with nbd, where sendmsg would get rejected

* tag 'block-6.18-20251023' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux:
block: require LBA dma_alignment when using PI
nbd: override creds to kernel when calling sock_{send,recv}msg()

+25
+10
block/blk-settings.c
··· 184 184 if (!bi->interval_exp) 185 185 bi->interval_exp = ilog2(lim->logical_block_size); 186 186 187 + /* 188 + * The PI generation / validation helpers do not expect intervals to 189 + * straddle multiple bio_vecs. Enforce alignment so that those are 190 + * never generated, and that each buffer is aligned as expected. 191 + */ 192 + if (bi->csum_type) { 193 + lim->dma_alignment = max(lim->dma_alignment, 194 + (1U << bi->interval_exp) - 1); 195 + } 196 + 187 197 return 0; 188 198 } 189 199
+15
drivers/block/nbd.c
··· 52 52 static DEFINE_IDR(nbd_index_idr); 53 53 static DEFINE_MUTEX(nbd_index_mutex); 54 54 static struct workqueue_struct *nbd_del_wq; 55 + static struct cred *nbd_cred; 55 56 static int nbd_total_devices = 0; 56 57 57 58 struct nbd_sock { ··· 555 554 int result; 556 555 struct msghdr msg = {} ; 557 556 unsigned int noreclaim_flag; 557 + const struct cred *old_cred; 558 558 559 559 if (unlikely(!sock)) { 560 560 dev_err_ratelimited(disk_to_dev(nbd->disk), ··· 563 561 (send ? "send" : "recv")); 564 562 return -EINVAL; 565 563 } 564 + 565 + old_cred = override_creds(nbd_cred); 566 566 567 567 msg.msg_iter = *iter; 568 568 ··· 589 585 } while (msg_data_left(&msg)); 590 586 591 587 memalloc_noreclaim_restore(noreclaim_flag); 588 + 589 + revert_creds(old_cred); 592 590 593 591 return result; 594 592 } ··· 2683 2677 return -ENOMEM; 2684 2678 } 2685 2679 2680 + nbd_cred = prepare_kernel_cred(&init_task); 2681 + if (!nbd_cred) { 2682 + destroy_workqueue(nbd_del_wq); 2683 + unregister_blkdev(NBD_MAJOR, "nbd"); 2684 + return -ENOMEM; 2685 + } 2686 + 2686 2687 if (genl_register_family(&nbd_genl_family)) { 2688 + put_cred(nbd_cred); 2687 2689 destroy_workqueue(nbd_del_wq); 2688 2690 unregister_blkdev(NBD_MAJOR, "nbd"); 2689 2691 return -EINVAL; ··· 2746 2732 /* Also wait for nbd_dev_remove_work() completes */ 2747 2733 destroy_workqueue(nbd_del_wq); 2748 2734 2735 + put_cred(nbd_cred); 2749 2736 idr_destroy(&nbd_index_idr); 2750 2737 unregister_blkdev(NBD_MAJOR, "nbd"); 2751 2738 }