From d82f5e1f4926358178b8554dae61b5b2ae1ed778 Mon Sep 17 00:00:00 2001 From: Peter Oberparleiter Date: Wed, 7 Mar 2018 14:11:25 +0000 Subject: [PATCH] zdev: Fix blocking chzdev call/udev rules with cmb_enable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changing the cmb_enable attribute of a CCW device can cause a blocked chzdev process or udev rule. This problem occurs when the device is offline, cmb_enable is 0, and chzdev is used to set cmb_enable=1 and online=1 at the same time. The following call will block: chzdev 190d -a cmb_enable=1 online=1 The following call will generate a udev rule that will block subsequent calls to 'udevadm settle': chzdev 190d -p online=1 cmb_enable=1 Fix this by ensuring that cmb_enable is only set when the CCW device is not online. Reported-by: André Wild Signed-off-by: Peter Oberparleiter Signed-off-by: Jan Höppner --- zdev/src/ccw.c | 1 + 1 file changed, 1 insertion(+) diff --git a/zdev/src/ccw.c b/zdev/src/ccw.c index 78429bc7..39b264c6 100644 --- a/zdev/src/ccw.c +++ b/zdev/src/ccw.c @@ -73,6 +73,7 @@ struct attrib ccw_attr_cmb_enable = { " 1: Data collection is enabled (rewrite 1 to reset data)\n", .rewrite = 1, .defval = "0", + .order_cmp = ccw_offline_only_order_cmp, .accept = ACCEPT_ARRAY(ACCEPT_RANGE(0, 1)), };