[CRIU] [PATCH] util: use glibc macros to generate device numbers in the dev_t format
Andrew Vagin
avagin at parallels.com
Mon May 5 03:52:30 PDT 2014
On Mon, May 05, 2014 at 02:26:50PM +0400, Andrey Vagin wrote:
> Our version of macroses are worng.
>
> Our macros:
#define MINOR(dev) ((dev) & 0xff)
>
> Glibc function:
> return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
>
> Reported-by: Amey Deshpande <ameyd at google.com>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
> ---
> arch/aarch64/include/asm/types.h | 3 ---
> include/util.h | 7 ++-----
> mount.c | 2 +-
> 3 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/arch/aarch64/include/asm/types.h b/arch/aarch64/include/asm/types.h
> index 73d0fec..8dd336e 100644
> --- a/arch/aarch64/include/asm/types.h
> +++ b/arch/aarch64/include/asm/types.h
> @@ -13,9 +13,6 @@
> #define SIGMAX 64
> #define SIGMAX_OLD 31
>
> -#define MAJOR(dev) ((dev)>>8)
> -#define MINOR(dev) ((dev) & 0xff)
> -
> typedef void rt_signalfn_t(int, siginfo_t *, void *);
> typedef rt_signalfn_t *rt_sighandler_t;
>
> diff --git a/include/util.h b/include/util.h
> index c4b8e69..d20bfcc 100644
> --- a/include/util.h
> +++ b/include/util.h
> @@ -211,11 +211,8 @@ static inline dev_t kdev_to_odev(u32 kdev)
> */
> unsigned major = kdev_major(kdev);
> unsigned minor = kdev_minor(kdev);
> -#if BITS_PER_LONG == 32
> - return (major << 8) | minor;
> -#else
> - return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
> -#endif
> +
> + return makedev(major, minor);
> }
>
> extern int copy_file(int fd_in, int fd_out, size_t bytes);
> diff --git a/mount.c b/mount.c
> index b152d44..1d960ae 100644
> --- a/mount.c
> +++ b/mount.c
> @@ -158,7 +158,7 @@ dev_t phys_stat_resolve_dev(struct mount_info *tree,
> * obtained from mountinfo (ie subvolume0).
> */
> return strcmp(m->fstype->name, "btrfs") ?
> - MKKDEV(MAJOR(st_dev), MINOR(st_dev)) : m->s_dev;
> + MKKDEV(major(st_dev), minor(st_dev)) : m->s_dev;
> }
>
> bool phys_stat_dev_match(struct mount_info *tree, dev_t st_dev,
> --
> 1.8.5.3
>
More information about the CRIU
mailing list