block-6.18-20251023
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmj62psQHGF4Ym9lQGtl
cm5lbC5kawAKCRD301j7KXHgpjMiD/0cTxemB2tYk5Nd1QIAda8cwO0fn1jLgamH
tjQfy0uq4kxzSY4QWWx8HkA8sEybAOpAwP2u+F3RN/CsW3//TMA+H8JGW1h0k5OG
dh+0asF0iru9euyAePTLUExOw2V3VgEajjvt/2ezkjussNki6vcXBoIzGfeZKQ5E
MSx6LTbnpzAy+SUydYFpLFtFcokXzUyp/TKZY+QgsIzsqo/ReUm3Caa/KbxQBPQm
7MhpUpnTdI1PjYZZE/Y/p4iWtesCSpiSOayYKhtBQX4FzMo12MZw5nRkJkliLUvm
EtPuSYBSCQEKnYVlfCqLuVd8r7drgMgwZOmNhOsdtUHLigtkPolxQOqQKniX3u70
ycMqn3b1BdEFSqVe/eXhIRZ3YCL3xEAJUYTBRvwbf7XVC804F8VV+CqAey835A4D
IIcIh8vYrkw0HD5HP3aILKlWPHilArDqjcuU260Qd9i79EV7zVRUJrySc0mZ9zK9
XVKX0csETx1SrdH9vRlwBaeJzQyF9J18fuYMD7JV1dK0FhkEX6+pF5dY5rE6S+0r
/tjZgEwSS4siQYhsOM+q3J/ZoLMP2RmW10rYYcKiS9NrqYm1b5VNenBVm7bX6SQO
P29JtDJG374ygPiFn7opMbY79LDJ8JNS5g+vq0en8HtEGwtWuFM3vVCYyerPkiCl
IgVxWd/xYQ==
=Zqjz
-----END PGP SIGNATURE-----
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()
pull/1354/merge
commit
d2818517e3
|
|
@ -184,6 +184,16 @@ static int blk_validate_integrity_limits(struct queue_limits *lim)
|
||||||
if (!bi->interval_exp)
|
if (!bi->interval_exp)
|
||||||
bi->interval_exp = ilog2(lim->logical_block_size);
|
bi->interval_exp = ilog2(lim->logical_block_size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The PI generation / validation helpers do not expect intervals to
|
||||||
|
* straddle multiple bio_vecs. Enforce alignment so that those are
|
||||||
|
* never generated, and that each buffer is aligned as expected.
|
||||||
|
*/
|
||||||
|
if (bi->csum_type) {
|
||||||
|
lim->dma_alignment = max(lim->dma_alignment,
|
||||||
|
(1U << bi->interval_exp) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@
|
||||||
static DEFINE_IDR(nbd_index_idr);
|
static DEFINE_IDR(nbd_index_idr);
|
||||||
static DEFINE_MUTEX(nbd_index_mutex);
|
static DEFINE_MUTEX(nbd_index_mutex);
|
||||||
static struct workqueue_struct *nbd_del_wq;
|
static struct workqueue_struct *nbd_del_wq;
|
||||||
|
static struct cred *nbd_cred;
|
||||||
static int nbd_total_devices = 0;
|
static int nbd_total_devices = 0;
|
||||||
|
|
||||||
struct nbd_sock {
|
struct nbd_sock {
|
||||||
|
|
@ -554,6 +555,7 @@ static int __sock_xmit(struct nbd_device *nbd, struct socket *sock, int send,
|
||||||
int result;
|
int result;
|
||||||
struct msghdr msg = {} ;
|
struct msghdr msg = {} ;
|
||||||
unsigned int noreclaim_flag;
|
unsigned int noreclaim_flag;
|
||||||
|
const struct cred *old_cred;
|
||||||
|
|
||||||
if (unlikely(!sock)) {
|
if (unlikely(!sock)) {
|
||||||
dev_err_ratelimited(disk_to_dev(nbd->disk),
|
dev_err_ratelimited(disk_to_dev(nbd->disk),
|
||||||
|
|
@ -562,6 +564,8 @@ static int __sock_xmit(struct nbd_device *nbd, struct socket *sock, int send,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
old_cred = override_creds(nbd_cred);
|
||||||
|
|
||||||
msg.msg_iter = *iter;
|
msg.msg_iter = *iter;
|
||||||
|
|
||||||
noreclaim_flag = memalloc_noreclaim_save();
|
noreclaim_flag = memalloc_noreclaim_save();
|
||||||
|
|
@ -586,6 +590,8 @@ static int __sock_xmit(struct nbd_device *nbd, struct socket *sock, int send,
|
||||||
|
|
||||||
memalloc_noreclaim_restore(noreclaim_flag);
|
memalloc_noreclaim_restore(noreclaim_flag);
|
||||||
|
|
||||||
|
revert_creds(old_cred);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2677,7 +2683,15 @@ static int __init nbd_init(void)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nbd_cred = prepare_kernel_cred(&init_task);
|
||||||
|
if (!nbd_cred) {
|
||||||
|
destroy_workqueue(nbd_del_wq);
|
||||||
|
unregister_blkdev(NBD_MAJOR, "nbd");
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
if (genl_register_family(&nbd_genl_family)) {
|
if (genl_register_family(&nbd_genl_family)) {
|
||||||
|
put_cred(nbd_cred);
|
||||||
destroy_workqueue(nbd_del_wq);
|
destroy_workqueue(nbd_del_wq);
|
||||||
unregister_blkdev(NBD_MAJOR, "nbd");
|
unregister_blkdev(NBD_MAJOR, "nbd");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
@ -2732,6 +2746,7 @@ static void __exit nbd_cleanup(void)
|
||||||
/* Also wait for nbd_dev_remove_work() completes */
|
/* Also wait for nbd_dev_remove_work() completes */
|
||||||
destroy_workqueue(nbd_del_wq);
|
destroy_workqueue(nbd_del_wq);
|
||||||
|
|
||||||
|
put_cred(nbd_cred);
|
||||||
idr_destroy(&nbd_index_idr);
|
idr_destroy(&nbd_index_idr);
|
||||||
unregister_blkdev(NBD_MAJOR, "nbd");
|
unregister_blkdev(NBD_MAJOR, "nbd");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue