[3/5] switchtec: A temporary variable should be used for the flags of switchtec_ioctl_event_ctl
diff mbox series

Message ID 1542275044-10970-4-git-send-email-wesley.sheng@microchip.com
State In Next
Commit e4a7dca5de625018b29417ecc39dc5037d9a5a36
Headers show
  • Switchtec MRPC DMA mode support
Related show

Commit Message

Wesley Sheng Nov. 15, 2018, 9:44 a.m. UTC
From: Joey Zhang <joey.zhang@microchip.com>

For nr_idxs is larger than 1 switchtec_ioctl_event_ctl event flags will be
used by each event indexes. In current implementation the event flags are
overwritten by first call of the function event_ctl().

Preserve the event flag value with a temporary variable.

Fixes: 52eabba5bcdb ("switchtec: Add IOCTLs to the Switchtec driver")
Signed-off-by: Joey Zhang <joey.zhang@microchip.com>
Signed-off-by: Wesley Sheng <wesley.sheng@microchip.com>
 drivers/pci/switch/switchtec.c | 3 +++
 1 file changed, 3 insertions(+)

diff mbox series

diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c
index 480107e..a908670 100644
--- a/drivers/pci/switch/switchtec.c
+++ b/drivers/pci/switch/switchtec.c
@@ -796,6 +796,7 @@  static int ioctl_event_ctl(struct switchtec_dev *stdev,
 	int ret;
 	int nr_idxs;
+	unsigned int event_flags;
 	struct switchtec_ioctl_event_ctl ctl;
 	if (copy_from_user(&ctl, uctl, sizeof(ctl)))
@@ -817,7 +818,9 @@  static int ioctl_event_ctl(struct switchtec_dev *stdev,
 			return -EINVAL;
+		event_flags = ctl.flags;
 		for (ctl.index = 0; ctl.index < nr_idxs; ctl.index++) {
+			ctl.flags = event_flags;
 			ret = event_ctl(stdev, &ctl);
 			if (ret < 0)
 				return ret;