linux/drivers
Michael Kelley c292a337d0 nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
The IOC_PR_CLEAR and IOC_PR_RELEASE ioctls are
non-functional on NVMe devices because the nvme_pr_clear()
and nvme_pr_release() functions set the IEKEY field incorrectly.
The IEKEY field should be set only when the key is zero (i.e,
not specified).  The current code does it backwards.

Furthermore, the NVMe spec describes the persistent
reservation "clear" function as an option on the reservation
release command. The current implementation of nvme_pr_clear()
erroneously uses the reservation register command.

Fix these errors. Note that NVMe version 1.3 and later specify
that setting the IEKEY field will return an error of Invalid
Field in Command.  The fix will set IEKEY when the key is zero,
which is appropriate as these ioctls consider a zero key to
be "unspecified", and the intention of the spec change is
to require a valid key.

Tested on a version 1.4 PCI NVMe device in an Azure VM.

Fixes: 1673f1f08c ("nvme: move block_device_operations and ns/ctrl freeing to common code")
Fixes: 1d277a637a ("NVMe: Add persistent reservation ops")
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2022-09-27 09:20:29 +02:00
..
accessibility
acpi pci-v5.20-changes 2022-08-04 19:30:35 -07:00
amba ARM: 9220/1: amba: Remove deferred device addition 2022-07-28 15:09:23 +01:00
android
ata ATA changes for 5.20-rc1 2022-08-03 15:26:04 -07:00
atm
auxdisplay
base Driver core / kernfs changes for 6.0-rc1 2022-08-04 11:31:20 -07:00
bcma
block loop: Check for overflow while configuring loop 2022-08-24 06:52:52 -06:00
bluetooth SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
bus SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
cdrom
char SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
clk The clk core gains a new set of APIs that allow drivers to both acquire clks 2022-08-04 18:40:08 -07:00
clocksource - Add the missing DT bindings for the MTU nomadik timer (Linus 2022-07-28 12:33:34 +02:00
comedi pci-v5.20-changes 2022-08-04 19:30:35 -07:00
connector
counter
cpufreq SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
cpuidle SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
crypto This update includes the following changes: 2022-08-02 17:45:14 -07:00
cxl
dax
dca
devfreq Char / Misc driver changes for 6.0-rc1 2022-08-04 11:05:48 -07:00
dio
dma pci-v5.20-changes 2022-08-04 19:30:35 -07:00
dma-buf drm for 5.20/6.0 2022-08-03 19:52:08 -07:00
edac platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
eisa
extcon
firewire firewire: net: Make use of get_unaligned_be48(), put_unaligned_be48() 2022-07-28 22:21:54 -07:00
firmware Char / Misc driver changes for 6.0-rc1 2022-08-04 11:05:48 -07:00
fpga
fsi
gnss
gpio gpio: updates for v6.0-rc1 2022-08-04 18:34:05 -07:00
gpu drm/amd/amdgpu: fix build failure due to implicit declaration 2022-08-04 12:29:10 -07:00
greybus
hid platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
hsi
hte
hv
hwmon hwmon updates for v5.20 2022-08-02 11:07:04 -07:00
hwspinlock
hwtracing
i2c platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
i3c
idle Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
iio
infiniband v5.20 pull request 2022-08-04 19:54:32 -07:00
input SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
interconnect
iommu Driver core / kernfs changes for 6.0-rc1 2022-08-04 11:31:20 -07:00
ipack
irqchip SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
isdn
leds
macintosh
mailbox
mcb
md md: call __md_stop_writes in md_stop 2022-08-24 11:19:59 -07:00
media SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
memory SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
memstick MMC core: 2022-08-04 19:41:09 -07:00
message
mfd gpio: updates for v6.0-rc1 2022-08-04 18:34:05 -07:00
misc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32 2022-08-04 15:20:39 -07:00
mmc MMC core: 2022-08-04 19:41:09 -07:00
most
mtd for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
mux
net v5.20 pull request 2022-08-04 19:54:32 -07:00
nfc
ntb
nubus
nvdimm for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
nvme nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices 2022-09-27 09:20:29 +02:00
nvmem SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
of Devicetree updates for v6.0: 2022-08-04 18:08:34 -07:00
opp
parisc
parport
pci pci-v5.20-changes 2022-08-04 19:30:35 -07:00
pcmcia
peci
perf
phy pci-v5.20-changes 2022-08-04 19:30:35 -07:00
pinctrl platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
platform platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
pnp
power platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
powercap Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
pps
ps3
ptp SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
pwm SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
rapidio
ras
regulator chrome platform changes for 5.20 2022-08-04 18:13:19 -07:00
remoteproc
reset SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
rpmsg
rtc
s390 s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup 2022-09-19 10:19:28 -06:00
sbus
scsi SCSI misc on 20220804 2022-08-04 19:47:37 -07:00
sh
siox
slimbus
soc SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
soundwire Char / Misc driver changes for 6.0-rc1 2022-08-04 11:05:48 -07:00
spi Driver core / kernfs changes for 6.0-rc1 2022-08-04 11:31:20 -07:00
spmi
ssb
staging Staging driver patches for 6.0-rc1 2022-08-04 12:01:42 -07:00
target SCSI misc on 20220804 2022-08-04 19:47:37 -07:00
tc
tee
thermal SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
thunderbolt USB / Thunderbolt changes for 6.0-rc1 2022-08-04 11:41:28 -07:00
tty ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
ufs SCSI misc on 20220804 2022-08-04 19:47:37 -07:00
uio
usb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32 2022-08-04 15:20:39 -07:00
vdpa
vfio ARM: 2022-08-04 14:59:54 -07:00
vhost
video Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32 2022-08-04 15:20:39 -07:00
virt Char / Misc driver changes for 6.0-rc1 2022-08-04 11:05:48 -07:00
virtio xen: branch for v6.0-rc1 2022-08-04 15:10:55 -07:00
vlynq
w1
watchdog platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
xen xen: branch for v6.0-rc1 2022-08-04 15:10:55 -07:00
zorro
Kconfig
Makefile Staging driver patches for 6.0-rc1 2022-08-04 12:01:42 -07:00