Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dirkmueller:acdc:sp5-rebuild
exfatprogs.31393
exfatprogs-libexfat-make-set_bit_le-64-bit-comp...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File exfatprogs-libexfat-make-set_bit_le-64-bit-compatible.patch of Package exfatprogs.31393
From 53e575bb646422860b85299cd93a80659d5a2189 Mon Sep 17 00:00:00 2001 From: Eric Sandeen <sandeen@sandeen.net> Date: Wed, 31 Mar 2021 21:40:54 +0900 Subject: [PATCH] exfatprogs: libexfat: make set_bit_le() 64-bit compatible References: bsc#1184882 Eric found that bitmap data is not written normally in bitmap location on s390x(64bit big endian system). This patch make set_bit_le() etc 64-bit compatible, something like this does seem to put the bits in the right place in the allocation bitmap at mkfs time. Signed-off-by: Eric Sandeen <sandeen@sandeen.net> Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> diff --git a/lib/libexfat.c b/lib/libexfat.c index 61a0778..13dfbaf 100644 --- a/lib/libexfat.c +++ b/lib/libexfat.c @@ -20,18 +20,20 @@ #include "libexfat.h" #include "version.h" +#define BITS_PER_LONG (sizeof(long) * CHAR_BIT) + #ifdef WORDS_BIGENDIAN -#define BITOP_LE_SWIZZLE (~0x7) +#define BITOP_LE_SWIZZLE ((BITS_PER_LONG - 1) & ~0x7) #else #define BITOP_LE_SWIZZLE 0 #endif -#define BIT_MASK(nr) ((1) << ((nr) % 32)) -#define BIT_WORD(nr) ((nr) / 32) +#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) +#define BIT_WORD(nr) ((nr) / BITS_PER_LONG) unsigned int print_level = EXFAT_INFO; -static inline void set_bit(int nr, unsigned int *addr) +static inline void set_bit(int nr, void *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); @@ -39,7 +41,7 @@ static inline void set_bit(int nr, unsigned int *addr) *p |= mask; } -static inline void clear_bit(int nr, unsigned int *addr) +static inline void clear_bit(int nr, void *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor