public/io: xs_wire: Allow Xenstore to report EPERM
authorJulien Grall <jgrall@amazon.com>
Thu, 30 Jun 2022 18:37:34 +0000 (19:37 +0100)
committerJulien Grall <jgrall@amazon.com>
Thu, 30 Jun 2022 18:37:54 +0000 (19:37 +0100)
C Xenstored is using EPERM when the client is not allowed to change
the owner (see GET_PERMS). However, the xenstore protocol doesn't
describe EPERM so EINVAL will be sent to the client.

When writing test, it would be useful to differentiate between EINVAL
(e.g. parsing error) and EPERM (i.e. no permission). So extend
xsd_errors[] to support return EPERM.

Looking at previous time xsd_errors was extended (8b2c441a1b), it was
considered to be safe to add a new error because at least Linux driver
and libxenstore treat an unknown error code as EINVAL.

This statement doesn't cover other possible OSes, however I am not
aware of any breakage.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
xen/include/public/io/xs_wire.h

index c1ec7c73e3b1094cca7539f8d6c1003da1f73373..b477bd0cd287f1efa2eda958cff7dcabbeb29ff2 100644 (file)
@@ -90,7 +90,8 @@ __attribute__((unused))
     XSD_ERROR(EBUSY),
     XSD_ERROR(EAGAIN),
     XSD_ERROR(EISCONN),
-    XSD_ERROR(E2BIG)
+    XSD_ERROR(E2BIG),
+    XSD_ERROR(EPERM),
 };
 #endif