partitions: msdos: fix one-byte get_unaligned()
authorArnd Bergmann <arnd@arndb.de>
Fri, 7 May 2021 22:07:53 +0000 (00:07 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 17 May 2021 11:30:29 +0000 (13:30 +0200)
A simplification of get_unaligned() clashes with callers that pass
in a character pointer, causing a harmless warning like:

block/partitions/msdos.c: In function 'msdos_partition':
include/asm-generic/unaligned.h:13:22: warning: 'packed' attribute ignored for field of type 'u8' {aka 'unsigned char'} [-Wattributes]

Remove the SYS_IND() macro with the get_unaligned() call
and just use the ->ind field directly.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
block/partitions/ldm.c
block/partitions/ldm.h
block/partitions/msdos.c

index d333786..cc86534 100644 (file)
@@ -510,7 +510,7 @@ static bool ldm_validate_partition_table(struct parsed_partitions *state)
 
        p = (struct msdos_partition *)(data + 0x01BE);
        for (i = 0; i < 4; i++, p++)
-               if (SYS_IND (p) == LDM_PARTITION) {
+               if (p->sys_ind == LDM_PARTITION) {
                        result = true;
                        break;
                }
index d8d6bea..8693704 100644 (file)
@@ -84,9 +84,6 @@ struct parsed_partitions;
 #define TOC_BITMAP1            "config"        /* Names of the two defined */
 #define TOC_BITMAP2            "log"           /* bitmaps in the TOCBLOCK. */
 
-/* Borrowed from msdos.c */
-#define SYS_IND(p)             (get_unaligned(&(p)->sys_ind))
-
 struct frag {                          /* VBLK Fragment handling */
        struct list_head list;
        u32             group;
index 8f2fcc0..c94de37 100644 (file)
@@ -38,8 +38,6 @@
  */
 #include <asm/unaligned.h>
 
-#define SYS_IND(p)     get_unaligned(&p->sys_ind)
-
 static inline sector_t nr_sects(struct msdos_partition *p)
 {
        return (sector_t)get_unaligned_le32(&p->nr_sects);
@@ -52,9 +50,9 @@ static inline sector_t start_sect(struct msdos_partition *p)
 
 static inline int is_extended_partition(struct msdos_partition *p)
 {
-       return (SYS_IND(p) == DOS_EXTENDED_PARTITION ||
-               SYS_IND(p) == WIN98_EXTENDED_PARTITION ||
-               SYS_IND(p) == LINUX_EXTENDED_PARTITION);
+       return (p->sys_ind == DOS_EXTENDED_PARTITION ||
+               p->sys_ind == WIN98_EXTENDED_PARTITION ||
+               p->sys_ind == LINUX_EXTENDED_PARTITION);
 }
 
 #define MSDOS_LABEL_MAGIC1     0x55
@@ -193,7 +191,7 @@ static void parse_extended(struct parsed_partitions *state,
 
                        put_partition(state, state->next, next, size);
                        set_info(state, state->next, disksig);
-                       if (SYS_IND(p) == LINUX_RAID_PARTITION)
+                       if (p->sys_ind == LINUX_RAID_PARTITION)
                                state->parts[state->next].flags = ADDPART_FLAG_RAID;
                        loopct = 0;
                        if (++state->next == state->limit)
@@ -546,7 +544,7 @@ static void parse_minix(struct parsed_partitions *state,
         * a secondary MBR describing its subpartitions, or
         * the normal boot sector. */
        if (msdos_magic_present(data + 510) &&
-           SYS_IND(p) == MINIX_PARTITION) { /* subpartition table present */
+           p->sys_ind == MINIX_PARTITION) { /* subpartition table present */
                char tmp[1 + BDEVNAME_SIZE + 10 + 9 + 1];
 
                snprintf(tmp, sizeof(tmp), " %s%d: <minix:", state->name, origin);
@@ -555,7 +553,7 @@ static void parse_minix(struct parsed_partitions *state,
                        if (state->next == state->limit)
                                break;
                        /* add each partition in use */
-                       if (SYS_IND(p) == MINIX_PARTITION)
+                       if (p->sys_ind == MINIX_PARTITION)
                                put_partition(state, state->next++,
                                              start_sect(p), nr_sects(p));
                }
@@ -643,7 +641,7 @@ int msdos_partition(struct parsed_partitions *state)
        p = (struct msdos_partition *) (data + 0x1be);
        for (slot = 1 ; slot <= 4 ; slot++, p++) {
                /* If this is an EFI GPT disk, msdos should ignore it. */
-               if (SYS_IND(p) == EFI_PMBR_OSTYPE_EFI_GPT) {
+               if (p->sys_ind == EFI_PMBR_OSTYPE_EFI_GPT) {
                        put_dev_sector(sect);
                        return 0;
                }
@@ -685,11 +683,11 @@ int msdos_partition(struct parsed_partitions *state)
                }
                put_partition(state, slot, start, size);
                set_info(state, slot, disksig);
-               if (SYS_IND(p) == LINUX_RAID_PARTITION)
+               if (p->sys_ind == LINUX_RAID_PARTITION)
                        state->parts[slot].flags = ADDPART_FLAG_RAID;
-               if (SYS_IND(p) == DM6_PARTITION)
+               if (p->sys_ind == DM6_PARTITION)
                        strlcat(state->pp_buf, "[DM]", PAGE_SIZE);
-               if (SYS_IND(p) == EZD_PARTITION)
+               if (p->sys_ind == EZD_PARTITION)
                        strlcat(state->pp_buf, "[EZD]", PAGE_SIZE);
        }
 
@@ -698,7 +696,7 @@ int msdos_partition(struct parsed_partitions *state)
        /* second pass - output for each on a separate line */
        p = (struct msdos_partition *) (0x1be + data);
        for (slot = 1 ; slot <= 4 ; slot++, p++) {
-               unsigned char id = SYS_IND(p);
+               unsigned char id = p->sys_ind;
                int n;
 
                if (!nr_sects(p))