Skip to content

Commit 133008e

Browse files
keithbuschaxboe
authored andcommitted
blk-integrity: remove seed for user mapped buffers
The seed is only used for kernel generation and verification. That doesn't happen for user buffers, so passing the seed around doesn't accomplish anything. Signed-off-by: Keith Busch <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Anuj Gupta <[email protected]> Reviewed-by: Kanchan Joshi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 826cc42 commit 133008e

File tree

5 files changed

+19
-24
lines changed

5 files changed

+19
-24
lines changed

block/bio-integrity.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ EXPORT_SYMBOL(bio_integrity_add_page);
199199

200200
static int bio_integrity_copy_user(struct bio *bio, struct bio_vec *bvec,
201201
int nr_vecs, unsigned int len,
202-
unsigned int direction, u32 seed)
202+
unsigned int direction)
203203
{
204204
bool write = direction == ITER_SOURCE;
205205
struct bio_integrity_payload *bip;
@@ -247,7 +247,6 @@ static int bio_integrity_copy_user(struct bio *bio, struct bio_vec *bvec,
247247
}
248248

249249
bip->bip_flags |= BIP_COPY_USER;
250-
bip->bip_iter.bi_sector = seed;
251250
bip->bip_vcnt = nr_vecs;
252251
return 0;
253252
free_bip:
@@ -258,7 +257,7 @@ static int bio_integrity_copy_user(struct bio *bio, struct bio_vec *bvec,
258257
}
259258

260259
static int bio_integrity_init_user(struct bio *bio, struct bio_vec *bvec,
261-
int nr_vecs, unsigned int len, u32 seed)
260+
int nr_vecs, unsigned int len)
262261
{
263262
struct bio_integrity_payload *bip;
264263

@@ -267,7 +266,6 @@ static int bio_integrity_init_user(struct bio *bio, struct bio_vec *bvec,
267266
return PTR_ERR(bip);
268267

269268
memcpy(bip->bip_vec, bvec, nr_vecs * sizeof(*bvec));
270-
bip->bip_iter.bi_sector = seed;
271269
bip->bip_iter.bi_size = len;
272270
bip->bip_vcnt = nr_vecs;
273271
return 0;
@@ -303,8 +301,7 @@ static unsigned int bvec_from_pages(struct bio_vec *bvec, struct page **pages,
303301
return nr_bvecs;
304302
}
305303

306-
int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t bytes,
307-
u32 seed)
304+
int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t bytes)
308305
{
309306
struct request_queue *q = bdev_get_queue(bio->bi_bdev);
310307
unsigned int align = blk_lim_dma_alignment_and_pad(&q->limits);
@@ -350,9 +347,9 @@ int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t bytes,
350347

351348
if (copy)
352349
ret = bio_integrity_copy_user(bio, bvec, nr_bvecs, bytes,
353-
direction, seed);
350+
direction);
354351
else
355-
ret = bio_integrity_init_user(bio, bvec, nr_bvecs, bytes, seed);
352+
ret = bio_integrity_init_user(bio, bvec, nr_bvecs, bytes);
356353
if (ret)
357354
goto release_pages;
358355
if (bvec != stack_vec)

block/blk-integrity.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ int blk_rq_map_integrity_sg(struct request *rq, struct scatterlist *sglist)
113113
EXPORT_SYMBOL(blk_rq_map_integrity_sg);
114114

115115
int blk_rq_integrity_map_user(struct request *rq, void __user *ubuf,
116-
ssize_t bytes, u32 seed)
116+
ssize_t bytes)
117117
{
118-
int ret = bio_integrity_map_user(rq->bio, ubuf, bytes, seed);
118+
int ret = bio_integrity_map_user(rq->bio, ubuf, bytes);
119119

120120
if (ret)
121121
return ret;

drivers/nvme/host/ioctl.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ static struct request *nvme_alloc_user_request(struct request_queue *q,
114114

115115
static int nvme_map_user_request(struct request *req, u64 ubuffer,
116116
unsigned bufflen, void __user *meta_buffer, unsigned meta_len,
117-
u32 meta_seed, struct io_uring_cmd *ioucmd, unsigned int flags)
117+
struct io_uring_cmd *ioucmd, unsigned int flags)
118118
{
119119
struct request_queue *q = req->q;
120120
struct nvme_ns *ns = q->queuedata;
@@ -152,8 +152,7 @@ static int nvme_map_user_request(struct request *req, u64 ubuffer,
152152
bio_set_dev(bio, bdev);
153153

154154
if (has_metadata) {
155-
ret = blk_rq_integrity_map_user(req, meta_buffer, meta_len,
156-
meta_seed);
155+
ret = blk_rq_integrity_map_user(req, meta_buffer, meta_len);
157156
if (ret)
158157
goto out_unmap;
159158
}
@@ -170,7 +169,7 @@ static int nvme_map_user_request(struct request *req, u64 ubuffer,
170169

171170
static int nvme_submit_user_cmd(struct request_queue *q,
172171
struct nvme_command *cmd, u64 ubuffer, unsigned bufflen,
173-
void __user *meta_buffer, unsigned meta_len, u32 meta_seed,
172+
void __user *meta_buffer, unsigned meta_len,
174173
u64 *result, unsigned timeout, unsigned int flags)
175174
{
176175
struct nvme_ns *ns = q->queuedata;
@@ -187,7 +186,7 @@ static int nvme_submit_user_cmd(struct request_queue *q,
187186
req->timeout = timeout;
188187
if (ubuffer && bufflen) {
189188
ret = nvme_map_user_request(req, ubuffer, bufflen, meta_buffer,
190-
meta_len, meta_seed, NULL, flags);
189+
meta_len, NULL, flags);
191190
if (ret)
192191
return ret;
193192
}
@@ -268,7 +267,7 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
268267
c.rw.lbatm = cpu_to_le16(io.appmask);
269268

270269
return nvme_submit_user_cmd(ns->queue, &c, io.addr, length, metadata,
271-
meta_len, lower_32_bits(io.slba), NULL, 0, 0);
270+
meta_len, NULL, 0, 0);
272271
}
273272

274273
static bool nvme_validate_passthru_nsid(struct nvme_ctrl *ctrl,
@@ -323,7 +322,7 @@ static int nvme_user_cmd(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
323322

324323
status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c,
325324
cmd.addr, cmd.data_len, nvme_to_user_ptr(cmd.metadata),
326-
cmd.metadata_len, 0, &result, timeout, 0);
325+
cmd.metadata_len, &result, timeout, 0);
327326

328327
if (status >= 0) {
329328
if (put_user(result, &ucmd->result))
@@ -370,7 +369,7 @@ static int nvme_user_cmd64(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
370369

371370
status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c,
372371
cmd.addr, cmd.data_len, nvme_to_user_ptr(cmd.metadata),
373-
cmd.metadata_len, 0, &cmd.result, timeout, flags);
372+
cmd.metadata_len, &cmd.result, timeout, flags);
374373

375374
if (status >= 0) {
376375
if (put_user(cmd.result, &ucmd->result))
@@ -504,7 +503,7 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns,
504503
if (d.addr && d.data_len) {
505504
ret = nvme_map_user_request(req, d.addr,
506505
d.data_len, nvme_to_user_ptr(d.metadata),
507-
d.metadata_len, 0, ioucmd, vec);
506+
d.metadata_len, ioucmd, vec);
508507
if (ret)
509508
return ret;
510509
}

include/linux/bio-integrity.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio, gfp_t gfp,
7272
unsigned int nr);
7373
int bio_integrity_add_page(struct bio *bio, struct page *page, unsigned int len,
7474
unsigned int offset);
75-
int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t len, u32 seed);
75+
int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t len);
7676
void bio_integrity_unmap_user(struct bio *bio);
7777
bool bio_integrity_prep(struct bio *bio);
7878
void bio_integrity_advance(struct bio *bio, unsigned int bytes_done);
@@ -99,7 +99,7 @@ static inline void bioset_integrity_free(struct bio_set *bs)
9999
}
100100

101101
static inline int bio_integrity_map_user(struct bio *bio, void __user *ubuf,
102-
ssize_t len, u32 seed)
102+
ssize_t len)
103103
{
104104
return -EINVAL;
105105
}

include/linux/blk-integrity.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ static inline bool queue_limits_stack_integrity_bdev(struct queue_limits *t,
2828
int blk_rq_map_integrity_sg(struct request *, struct scatterlist *);
2929
int blk_rq_count_integrity_sg(struct request_queue *, struct bio *);
3030
int blk_rq_integrity_map_user(struct request *rq, void __user *ubuf,
31-
ssize_t bytes, u32 seed);
31+
ssize_t bytes);
3232

3333
static inline bool
3434
blk_integrity_queue_supports_integrity(struct request_queue *q)
@@ -104,8 +104,7 @@ static inline int blk_rq_map_integrity_sg(struct request *q,
104104
}
105105
static inline int blk_rq_integrity_map_user(struct request *rq,
106106
void __user *ubuf,
107-
ssize_t bytes,
108-
u32 seed)
107+
ssize_t bytes)
109108
{
110109
return -EINVAL;
111110
}

0 commit comments

Comments
 (0)