diff options
author | 2024-02-01 17:45:32 +0000 | |
---|---|---|
committer | 2024-02-01 17:45:32 +0000 | |
commit | e81fdba0208666b65bafeaba814874b4d6e5edde (patch) | |
tree | 5de26e8be4ca1801ca27bffe25c129d29b13dba9 /block/blk-map.c | |
parent | ASoC: amd: acp: Fix support for a Huawei Matebook laptop (diff) | |
parent | ALSA: hda: cs35l56: Remove unused test stub function (diff) | |
download | linux-e81fdba0208666b65bafeaba814874b4d6e5edde.tar.gz linux-e81fdba0208666b65bafeaba814874b4d6e5edde.tar.bz2 linux-e81fdba0208666b65bafeaba814874b4d6e5edde.zip |
ALSA: Various fixes for Cirrus Logic CS35L56 support
Merge series from Richard Fitzgerald <rf@opensource.cirrus.com>:
These patches fixe various things that were undocumented, unknown or
uncertain when the original driver code was written. And also a few
things that were just bugs.
Diffstat (limited to 'block/blk-map.c')
-rw-r--r-- | block/blk-map.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/block/blk-map.c b/block/blk-map.c index 8584babf3ea0..71210cdb3442 100644 --- a/block/blk-map.c +++ b/block/blk-map.c @@ -205,12 +205,19 @@ static int bio_copy_user_iov(struct request *rq, struct rq_map_data *map_data, /* * success */ - if ((iov_iter_rw(iter) == WRITE && - (!map_data || !map_data->null_mapped)) || - (map_data && map_data->from_user)) { + if (iov_iter_rw(iter) == WRITE && + (!map_data || !map_data->null_mapped)) { ret = bio_copy_from_iter(bio, iter); if (ret) goto cleanup; + } else if (map_data && map_data->from_user) { + struct iov_iter iter2 = *iter; + + /* This is the copy-in part of SG_DXFER_TO_FROM_DEV. */ + iter2.data_source = ITER_SOURCE; + ret = bio_copy_from_iter(bio, &iter2); + if (ret) + goto cleanup; } else { if (bmd->is_our_pages) zero_fill_bio(bio); |