unsigned int evtchn;
        int err;
 
-       err = xenbus_gather(XBT_NIL, dev->otherend,
-                           "ctrl-ring-ref", "%u", &val, NULL);
-       if (err)
+       err = xenbus_scanf(XBT_NIL, dev->otherend,
+                          "ctrl-ring-ref", "%u", &val);
+       if (err < 0)
                goto done; /* The frontend does not have a control ring */
 
        ring_ref = val;
 
-       err = xenbus_gather(XBT_NIL, dev->otherend,
-                           "event-channel-ctrl", "%u", &val, NULL);
-       if (err) {
+       err = xenbus_scanf(XBT_NIL, dev->otherend,
+                          "event-channel-ctrl", "%u", &val);
+       if (err < 0) {
                xenbus_dev_fatal(dev, err,
                                 "reading %s/event-channel-ctrl",
                                 dev->otherend);