mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
NVMe: fix type warning on 32-bit
A recent change to the ioctl handling caused a new harmless
warning in the NVMe driver on all 32-bit machines:
drivers/block/nvme-core.c: In function 'nvme_submit_io':
drivers/block/nvme-core.c:1794:29: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
In order to shup up that warning, this introduces a new
temporary variable that uses a double cast to extract
the pointer from an __u64 structure member.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: a67a95134f
("NVMe: Meta data handling through submit io ioctl")
Acked-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
aad653a0bc
commit
fec558b5f1
1 changed files with 6 additions and 4 deletions
|
@ -1750,6 +1750,7 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
|
||||||
struct nvme_iod *iod;
|
struct nvme_iod *iod;
|
||||||
dma_addr_t meta_dma = 0;
|
dma_addr_t meta_dma = 0;
|
||||||
void *meta = NULL;
|
void *meta = NULL;
|
||||||
|
void __user *metadata;
|
||||||
|
|
||||||
if (copy_from_user(&io, uio, sizeof(io)))
|
if (copy_from_user(&io, uio, sizeof(io)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
@ -1763,6 +1764,8 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
|
||||||
meta_len = 0;
|
meta_len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
metadata = (void __user *)(unsigned long)io.metadata;
|
||||||
|
|
||||||
write = io.opcode & 1;
|
write = io.opcode & 1;
|
||||||
|
|
||||||
switch (io.opcode) {
|
switch (io.opcode) {
|
||||||
|
@ -1786,13 +1789,13 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
|
||||||
if (meta_len) {
|
if (meta_len) {
|
||||||
meta = dma_alloc_coherent(&dev->pci_dev->dev, meta_len,
|
meta = dma_alloc_coherent(&dev->pci_dev->dev, meta_len,
|
||||||
&meta_dma, GFP_KERNEL);
|
&meta_dma, GFP_KERNEL);
|
||||||
|
|
||||||
if (!meta) {
|
if (!meta) {
|
||||||
status = -ENOMEM;
|
status = -ENOMEM;
|
||||||
goto unmap;
|
goto unmap;
|
||||||
}
|
}
|
||||||
if (write) {
|
if (write) {
|
||||||
if (copy_from_user(meta, (void __user *)io.metadata,
|
if (copy_from_user(meta, metadata, meta_len)) {
|
||||||
meta_len)) {
|
|
||||||
status = -EFAULT;
|
status = -EFAULT;
|
||||||
goto unmap;
|
goto unmap;
|
||||||
}
|
}
|
||||||
|
@ -1819,8 +1822,7 @@ static int nvme_submit_io(struct nvme_ns *ns, struct nvme_user_io __user *uio)
|
||||||
nvme_free_iod(dev, iod);
|
nvme_free_iod(dev, iod);
|
||||||
if (meta) {
|
if (meta) {
|
||||||
if (status == NVME_SC_SUCCESS && !write) {
|
if (status == NVME_SC_SUCCESS && !write) {
|
||||||
if (copy_to_user((void __user *)io.metadata, meta,
|
if (copy_to_user(metadata, meta, meta_len))
|
||||||
meta_len))
|
|
||||||
status = -EFAULT;
|
status = -EFAULT;
|
||||||
}
|
}
|
||||||
dma_free_coherent(&dev->pci_dev->dev, meta_len, meta, meta_dma);
|
dma_free_coherent(&dev->pci_dev->dev, meta_len, meta, meta_dma);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue