Hello community,

here is the log from the commit of package util-linux for openSUSE:Factory 
checked in at 2012-06-16 07:24:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/util-linux (Old)
 and      /work/SRC/openSUSE:Factory/.util-linux.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "util-linux", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/util-linux/util-linux.changes    2012-06-01 
07:24:52.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.util-linux.new/util-linux.changes       
2012-06-16 07:24:44.000000000 +0200
@@ -1,0 +2,19 @@
+Fri Jun 15 12:57:06 UTC 2012 - [email protected]
+
+- improve error messages from new mount (bnc#767208)
+ - backport patches from upstream git:
+  - mount-new-add-loopdev-specific-error-message.patch
+  - mount-new-use-MNT_ERR-for-error-messages.patch
+  - libmount-add-special-MNT_ERR-codes.patch
+  - mount-new-improve-error-messages.patch
+  - libmount-add-MNT_ERR_LOOPDEV.patch
+
+-------------------------------------------------------------------
+Thu Jun 14 13:04:40 UTC 2012 - [email protected]
+
+- fix automount with quota (rh#825836)
+  - mount-new-allow-sloppy-for-non-root.patch
+- fix wrong mount options for CIFS mounts (bnc#766157)
+  - libmount-don-t-use-nosuid-noexec-nodev-for-cifs-user.patch
+
+-------------------------------------------------------------------

New:
----
  libmount-add-MNT_ERR_LOOPDEV.patch
  libmount-add-special-MNT_ERR-codes.patch
  libmount-don-t-use-nosuid-noexec-nodev-for-cifs-user.patch
  mount-new-add-loopdev-specific-error-message.patch
  mount-new-allow-sloppy-for-non-root.patch
  mount-new-improve-error-messages.patch
  mount-new-use-MNT_ERR-for-error-messages.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ util-linux.spec ++++++
--- /var/tmp/diff_new_pack.EDOyoE/_old  2012-06-16 07:24:46.000000000 +0200
+++ /var/tmp/diff_new_pack.EDOyoE/_new  2012-06-16 07:24:46.000000000 +0200
@@ -88,6 +88,16 @@
 Patch1:         util-linux-2.12r-fdisk_remove_bogus_warnings.patch
 Patch2:         util-linux-2.20-libmount-deps.patch
 Patch3:         fdisk-tinfo.patch
+Patch4:         mount-new-allow-sloppy-for-non-root.patch
+Patch5:         libmount-don-t-use-nosuid-noexec-nodev-for-cifs-user.patch
+
+# Patches 6-10: bcn#767208 (taken from upstream
+Patch6:         mount-new-improve-error-messages.patch
+Patch7:         libmount-add-special-MNT_ERR-codes.patch
+Patch8:         mount-new-use-MNT_ERR-for-error-messages.patch
+Patch9:         libmount-add-MNT_ERR_LOOPDEV.patch
+Patch10:        mount-new-add-loopdev-specific-error-message.patch
+#####
 
 ##
 ## adjtimex
@@ -190,6 +200,13 @@
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
 
 #
 cd adjtimex-*

++++++ libmount-add-MNT_ERR_LOOPDEV.patch ++++++
>From 82756a747e4bcfc13a27b7618d889af080649584 Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Mon, 28 May 2012 12:26:36 +0200
Subject: [PATCH] libmount: add MNT_ERR_LOOPDEV

Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 lib/loopdev.c                  |    4 ++++
 libmount/src/context_loopdev.c |    1 +
 libmount/src/libmount.h.in     |    1 +
 3 files changed, 6 insertions(+), 0 deletions(-)

Index: util-linux-2.21.2/lib/loopdev.c
===================================================================
--- util-linux-2.21.2.orig/lib/loopdev.c
+++ util-linux-2.21.2/lib/loopdev.c
@@ -173,6 +173,8 @@ int loopcxt_init(struct loopdev_cxt *lc,
  */
 void loopcxt_deinit(struct loopdev_cxt *lc)
 {
+       int errsv = errno;
+
        if (!lc)
                return;
 
@@ -183,6 +185,8 @@ void loopcxt_deinit(struct loopdev_cxt *
 
        loopcxt_set_device(lc, NULL);
        loopcxt_deinit_iterator(lc);
+
+       errno = errsv;
 }
 
 /*
Index: util-linux-2.21.2/libmount/src/context_loopdev.c
===================================================================
--- util-linux-2.21.2.orig/libmount/src/context_loopdev.c
+++ util-linux-2.21.2/libmount/src/context_loopdev.c
@@ -261,6 +261,7 @@ int mnt_context_setup_loopdev(struct lib
 
                if (loopdev || rc != -EBUSY) {
                        DBG(CXT, mnt_debug_h(cxt, "failed to setup device"));
+                       rc = -MNT_ERR_LOOPDEV;
                        goto done;
                }
                DBG(CXT, mnt_debug_h(cxt, "loopdev stolen...trying again"));
Index: util-linux-2.21.2/libmount/src/libmount.h.in
===================================================================
--- util-linux-2.21.2.orig/libmount/src/libmount.h.in
+++ util-linux-2.21.2/libmount/src/libmount.h.in
@@ -126,6 +126,7 @@ enum {
 #define MNT_ERR_NOFSTAB      5000      /* not found required entry in fstab */
 #define MNT_ERR_NOFSTYPE     5001      /* failed to detect filesystem type */
 #define MNT_ERR_NOSOURCE     5002      /* required mount source undefined */
+#define MNT_ERR_LOOPDEV             5003       /* loopdev setup failed, errno 
set by libc */
 
 /* init.c */
 extern void mnt_init_debug(int mask);
++++++ libmount-add-special-MNT_ERR-codes.patch ++++++
>From 47dea49b4cb4a4a98a6c518cc17f6d2c92be9528 Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Tue, 24 Apr 2012 11:57:32 +0200
Subject: [PATCH] libmount: add special MNT_ERR_ codes

... to detect some situations where standard -errno is too generic.

Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 libmount/src/context.c     |   20 ++++++++++----------
 libmount/src/libmount.h.in |   12 ++++++++++++
 2 files changed, 22 insertions(+), 10 deletions(-)

Index: util-linux-2.21.2/libmount/src/context.c
===================================================================
--- util-linux-2.21.2.orig/libmount/src/context.c
+++ util-linux-2.21.2/libmount/src/context.c
@@ -1186,7 +1186,7 @@ int mnt_context_prepare_srcpath(struct l
                if (cache)
                        path = mnt_resolve_tag(t, v, cache);
 
-               rc = path ? mnt_fs_set_source(cxt->fs, path) : -EINVAL;
+               rc = path ? mnt_fs_set_source(cxt->fs, path) : 
-MNT_ERR_NOSOURCE;
 
        } else if (cache && !mnt_fs_is_pseudofs(cxt->fs)) {
                /*
@@ -1247,7 +1247,7 @@ int mnt_context_prepare_target(struct li
        cache = mnt_context_get_cache(cxt);
        if (cache) {
                char *path = mnt_resolve_path(tgt, cache);
-               if (strcmp(path, tgt))
+               if (path && strcmp(path, tgt) != 0)
                        rc = mnt_fs_set_target(cxt->fs, path);
        }
 
@@ -1543,7 +1543,7 @@ static int apply_table(struct libmnt_con
        }
 
        if (!fs)
-               return -EINVAL;
+               return -MNT_ERR_NOFSTAB;        /* not found */
 
        DBG(CXT, mnt_debug_h(cxt, "apply entry:"));
        DBG(CXT, mnt_fs_print_debug(fs, stderr));
Index: util-linux-2.21.2/libmount/src/libmount.h.in
===================================================================
--- util-linux-2.21.2.orig/libmount/src/libmount.h.in
+++ util-linux-2.21.2/libmount/src/libmount.h.in
@@ -115,6 +115,18 @@ enum {
        MNT_ACT_UMOUNT
 };
 
+/*
+ * Errors -- by default libmount returns -errno for generic errors (ENOMEM,
+ * EINVAL, ...) and for mount(2) errors, but for some specific operations it
+ * returns private error codes. Note that maximum system errno value should be
+ * 4095 on UNIXes.
+ *
+ * See also mnt_context_get_syscall_errno() and 
mnt_context_get_helper_status().
+ */
+#define MNT_ERR_NOFSTAB      5000      /* not found required entry in fstab */
+#define MNT_ERR_NOFSTYPE     5001      /* failed to detect filesystem type */
+#define MNT_ERR_NOSOURCE     5002      /* required mount source undefined */
+
 /* init.c */
 extern void mnt_init_debug(int mask);
 
++++++ libmount-don-t-use-nosuid-noexec-nodev-for-cifs-user.patch ++++++
>From e90e7401d0c318c9dac4a0204e2bca86949b1d32 Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Thu, 14 Jun 2012 14:19:26 +0200
Subject: [PATCH] libmount: don't use nosuid,noexec,nodev for cifs user=foo

   mount -t cifs //127.0.0.1/users /mnt/smb -o user=root,password=linux

is incorrectly translated to

   mount.cifs -o noexec,nosuid,nodev,user=root,password=linux ...

The command mount(8) should be sensitive to "user" (without "=<name>")
only. The correct cifs command line is:

   mount.cifs -o user=root,password=linux

Addresses: https://bugzilla.novell.com/show_bug.cgi?id=766157
Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 libmount/src/context_mount.c |   29 +++++++++++++++++++++++++++--
 libmount/src/optstr.c        |    9 +++++----
 2 files changed, 32 insertions(+), 6 deletions(-)

Index: util-linux-2.21.2/libmount/src/context_mount.c
===================================================================
--- util-linux-2.21.2.orig/libmount/src/context_mount.c
+++ util-linux-2.21.2/libmount/src/context_mount.c
@@ -53,6 +53,15 @@ static int fix_optstr(struct libmnt_cont
        if (cxt->mountflags & MS_PROPAGATION)
                cxt->mountflags &= (MS_PROPAGATION | MS_REC | MS_SILENT);
 
+       /*
+        * The "user" options is our business (so we can modify the option),
+        * but exception is command line for /sbin/mount.<type> helpers. Let's
+        * save the original user=<name> to call the helpers with unchanged
+        * "user" setting.
+        *
+        * Don't check for MNT_MS_USER in cxt->user_mountflags, the flag maybe
+        * removed by evaluate_permissions().
+        */
        if (!mnt_optstr_get_option(fs->user_optstr, "user", &val, &valsz)) {
                if (val) {
                        cxt->orig_user = strndup(val, valsz);
@@ -196,6 +205,10 @@ err:
 
 /*
  * this has to be called before fix_optstr()
+ *
+ * Note that user=<name> maybe be used by some filesystems as filesystem
+ * specific option (e.g. cifs). Yes, developers of such filesystems have
+ * allocated pretty hot place in hell...
  */
 static int evaluate_permissions(struct libmnt_context *cxt)
 {
@@ -233,10 +246,22 @@ static int evaluate_permissions(struct l
                }
 
                /*
-                * Note that MS_OWNERSECURE and MS_SECURE mount options
-                * are applied by mnt_optstr_get_flags() from 
mnt_context_merge_mflags()
+                * MS_OWNERSECURE and MS_SECURE mount options are already
+                * applied by mnt_optstr_get_flags() in 
mnt_context_merge_mflags()
+                * if "user" (but no user=<name> !) options is set.
+                *
+                * Let's ignore all user=<name> (if <name> is set) requests.
                 */
+               if (cxt->user_mountflags & MNT_MS_USER) {
+                       size_t valsz = 0;
 
+                       if (!mnt_optstr_get_option(cxt->fs->user_optstr,
+                                       "user", NULL, &valsz) && valsz) {
+
+                               DBG(CXT, mnt_debug_h(cxt, "perms: user=<name> 
detected, ignore"));
+                               cxt->user_mountflags &= ~MNT_MS_USER;
+                       }
+               }
 
                /*
                 * MS_OWNER: Allow owners to mount when fstab contains the
Index: util-linux-2.21.2/libmount/src/optstr.c
===================================================================
--- util-linux-2.21.2.orig/libmount/src/optstr.c
+++ util-linux-2.21.2/libmount/src/optstr.c
@@ -579,7 +579,7 @@ int mnt_optstr_get_flags(const char *opt
 {
        struct libmnt_optmap const *maps[2];
        char *name, *str = (char *) optstr;
-       size_t namesz = 0;
+       size_t namesz = 0, valsz = 0;
        int nmaps = 0;
 
        assert(optstr);
@@ -596,7 +596,7 @@ int mnt_optstr_get_flags(const char *opt
                 */
                maps[nmaps++] = mnt_get_builtin_optmap(MNT_USERSPACE_MAP);
 
-       while(!mnt_optstr_next_option(&str, &name, &namesz, NULL, NULL)) {
+       while(!mnt_optstr_next_option(&str, &name, &namesz, NULL, &valsz)) {
                const struct libmnt_optmap *ent;
                const struct libmnt_optmap *m;
 
@@ -610,9 +610,10 @@ int mnt_optstr_get_flags(const char *opt
                        else
                                *flags |= ent->id;
 
-               } else if (nmaps == 2 && m == maps[1]) {
+               } else if (nmaps == 2 && m == maps[1] && valsz == 0) {
                        /*
-                        * Special case -- translate "user" to MS_ options
+                        * Special case -- translate "user" (but no user=) to
+                        * MS_ options
                         */
                        if (ent->mask & MNT_INVERT)
                                continue;
++++++ mount-new-add-loopdev-specific-error-message.patch ++++++
>From 10389b1e4535dda7d27e5ab39d3d4f9d7868a5c9 Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Mon, 28 May 2012 12:26:41 +0200
Subject: [PATCH] mount: (new) add loopdev specific error message

Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 sys-utils/mount.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

Index: util-linux-2.21.2/sys-utils/mount.c
===================================================================
--- util-linux-2.21.2.orig/sys-utils/mount.c
+++ util-linux-2.21.2/sys-utils/mount.c
@@ -354,6 +354,9 @@ try_readonly:
                return MOUNT_EX_SUCCESS;        /* mount(2) success */
        }
 
+       mnt_context_get_mflags(cxt, &mflags);           /* mount(2) flags */
+       mnt_context_get_user_mflags(cxt, &uflags);      /* userspace flags */
+
        if (!mnt_context_syscall_called(cxt)) {
                /*
                 * libmount errors (extra library checks)
@@ -382,7 +385,15 @@ try_readonly:
                        else
                                warnx(_("mount source not defined"));
                        return MOUNT_EX_USAGE;
-
+               case -MNT_ERR_LOOPDEV:
+                       if (errno == ENOENT
+                           && (uflags & MNT_MS_ENCRYPTION)
+                           && src && stat(src, &st) == 0)
+                               warnx(_("%s: failed to setup loop device "
+                                       "(probably unknown encryption type)"), 
src);
+                       else
+                               warn(_("%s: failed to setup loop device"), src);
+                       return MOUNT_EX_FAIL;
                default:
                return handle_generic_errors(rc, _("%s: mount failed"),
                                             tgt ? tgt : src);
@@ -406,8 +417,6 @@ try_readonly:
         */
        syserr = mnt_context_get_syscall_errno(cxt);
 
-       mnt_context_get_mflags(cxt, &mflags);           /* mount(2) flags */
-       mnt_context_get_user_mflags(cxt, &uflags);      /* userspace flags */
 
        switch(syserr) {
        case EPERM:
++++++ mount-new-allow-sloppy-for-non-root.patch ++++++
>From e26de525e21677c680d87f63e4dafbe4859365bf Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Thu, 14 Jun 2012 14:43:21 +0200
Subject: [PATCH] mount: (new) allow sloppy for non-root

Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=825836
Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 sys-utils/mount.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Index: util-linux-2.21.2/sys-utils/mount.c
===================================================================
--- util-linux-2.21.2.orig/sys-utils/mount.c
+++ util-linux-2.21.2/sys-utils/mount.c
@@ -732,7 +732,7 @@ int main(int argc, char **argv)
                                        longopts, NULL)) != -1) {
 
                /* only few options are allowed for non-root users */
-               if (mnt_context_is_restricted(cxt) && !strchr("hlLUVvpri", c))
+               if (mnt_context_is_restricted(cxt) && !strchr("hlLUVvpris", c))
                        exit_non_root(option_to_longopt(c, longopts));
 
                switch(c) {
++++++ mount-new-improve-error-messages.patch ++++++
>From 58f108ef2b9c8cc0362e7781a72e5e921dc383b3 Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Tue, 17 Apr 2012 11:36:36 +0200
Subject: [PATCH] mount: (new) improve error messages

Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 sys-utils/mount.c |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

Index: util-linux-2.21.2/sys-utils/mount.c
===================================================================
--- util-linux-2.21.2.orig/sys-utils/mount.c
+++ util-linux-2.21.2/sys-utils/mount.c
@@ -367,16 +367,13 @@ try_readonly:
                        return MOUNT_EX_USAGE;
                }
 
-               /*
-                * TODO: add mnt_context_fstab_applied() to check if we found
-                *       target/source in the file.
-                */
-               if (!tgt) {
-                       if (mflags & MS_REMOUNT)
-                               warnx(_("%s not mounted"), src ? src : tgt);
-                       else
+               if (!tgt || (!src && !(mflags & MS_PROPAGATION))) {
+                       if (!mnt_context_fstab_applied(cxt))
                                warnx(_("can't find %s in %s"), src ? src : tgt,
                                                mnt_get_fstab_path());
+                       else if (mflags & MS_REMOUNT)
+                               warnx(_("%s not mounted"), src ? src : tgt);
+
                        return MOUNT_EX_USAGE;
                }
 
@@ -485,6 +482,8 @@ try_readonly:
        case EINVAL:
                if (mflags & MS_REMOUNT)
                        warnx(_("%s not mounted or bad option"), tgt);
+               else if (mflags & MS_PROPAGATION)
+                       warnx(_("%s is not mountpoint or bad option"), tgt);
                else
                        warnx(_("wrong fs type, bad option, bad superblock on 
%s,\n"
                                "       missing codepage or helper program, or 
other error"),
++++++ mount-new-use-MNT_ERR-for-error-messages.patch ++++++
>From ba24923e97e099668b8c96dba9596c90cb58c417 Mon Sep 17 00:00:00 2001
From: Karel Zak <[email protected]>
Date: Tue, 24 Apr 2012 11:59:18 +0200
Subject: [PATCH] mount: (new) use MNT_ERR_ for error messages

Signed-off-by: Karel Zak <[email protected]>
Signed-off-by: Petr Uzel <[email protected]>
---
 sys-utils/mount.c |   27 +++++++++++++--------------
 1 files changed, 13 insertions(+), 14 deletions(-)

Index: util-linux-2.21.2/sys-utils/mount.c
===================================================================
--- util-linux-2.21.2.orig/sys-utils/mount.c
+++ util-linux-2.21.2/sys-utils/mount.c
@@ -365,29 +365,28 @@ try_readonly:
                case -EBUSY:
                        warnx(_("%s is already mounted"), src);
                        return MOUNT_EX_USAGE;
-               }
-
-               if (!tgt || (!src && !(mflags & MS_PROPAGATION))) {
-                       if (!mnt_context_fstab_applied(cxt))
+               case -MNT_ERR_NOFSTAB:
                                warnx(_("can't find %s in %s"), src ? src : tgt,
                                                mnt_get_fstab_path());
-                       else if (mflags & MS_REMOUNT)
-                               warnx(_("%s not mounted"), src ? src : tgt);
-
                        return MOUNT_EX_USAGE;
-               }
-
-               if (!mnt_context_get_fstype(cxt)) {
+               case -MNT_ERR_NOFSTYPE:
                        if (restricted)
                                warnx(_("I could not determine the filesystem 
type, "
                                        "and none was specified"));
                        else
                                warnx(_("you must specify the filesystem 
type"));
                        return MOUNT_EX_USAGE;
-               }
+               case -MNT_ERR_NOSOURCE:
+                       if (src)
+                               warnx(_("can't find %s"), src);
+                       else
+                               warnx(_("mount source not defined"));
+                       return MOUNT_EX_USAGE;
+
+               default:
                return handle_generic_errors(rc, _("%s: mount failed"),
                                             tgt ? tgt : src);
-
+               }
        } else if (mnt_context_get_syscall_errno(cxt) == 0) {
                /*
                 * mount(2) syscall success, but something else failed
++++++ util-linux-2.20-libmount-deps.patch ++++++
--- /var/tmp/diff_new_pack.EDOyoE/_old  2012-06-16 07:24:46.000000000 +0200
+++ /var/tmp/diff_new_pack.EDOyoE/_new  2012-06-16 07:24:46.000000000 +0200
@@ -1,8 +1,8 @@
-Index: util-linux-2.20/libmount/src/Makefile.am
+Index: util-linux-2.21.2/libmount/src/Makefile.am
 ===================================================================
---- util-linux-2.20.orig/libmount/src/Makefile.am
-+++ util-linux-2.20/libmount/src/Makefile.am
-@@ -29,7 +29,7 @@ nodist_libmount_la_SOURCES = mountP.h
+--- util-linux-2.21.2.orig/libmount/src/Makefile.am
++++ util-linux-2.21.2/libmount/src/Makefile.am
+@@ -30,7 +30,7 @@ nodist_libmount_la_SOURCES = mountP.h
  
  libmount_la_LIBADD = $(ul_libblkid_la) $(SELINUX_LIBS)
  

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to