--- /dev/null
+---
+ kpartx/kpartx.c | 3 +--
+ kpartx/lopart.c | 2 +-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+Index: multipath-tools-130222/kpartx/kpartx.c
+===================================================================
+--- multipath-tools-130222.orig/kpartx/kpartx.c
++++ multipath-tools-130222/kpartx/kpartx.c
+@@ -204,7 +204,6 @@ main(int argc, char **argv){
+ char * delim = NULL;
+ char *uuid = NULL;
+ char *mapname = NULL;
+- int loopro = 0;
+ int hotplug = 0;
+ int loopcreated = 0;
+ struct stat buf;
+@@ -315,7 +314,7 @@ main(int argc, char **argv){
+ if (!loopdev) {
+ loopdev = find_unused_loop_device();
+
+- if (set_loop(loopdev, device, 0, &loopro)) {
++ if (set_loop(loopdev, device, 0, &ro)) {
+ fprintf(stderr, "can't set up loop\n");
+ exit (1);
+ }
+Index: multipath-tools-130222/kpartx/lopart.c
+===================================================================
+--- multipath-tools-130222.orig/kpartx/lopart.c
++++ multipath-tools-130222/kpartx/lopart.c
+@@ -230,7 +230,7 @@ set_loop (const char *device, const char
+
+ if ((ffd = open (file, mode)) < 0) {
+
+- if (!*loopro && errno == EROFS)
++ if (!*loopro && (errno == EROFS || errno == EACCES))
+ ffd = open (file, mode = O_RDONLY);
+
+ if (ffd < 0) {