Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 9f64c1e in mainline


Ignore:
Timestamp:
2017-07-16T17:55:23Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
9ef1fade
Parents:
5772aa1
Message:

Fix fat32 EBPB packing. Fix 32-bit FAT BS being detected as MBR. Fix error path.

Location:
uspace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/label/include/std/fat.h

    r5772aa1 r9f64c1e  
    117117                        /** Signature. */
    118118                        uint16_t        signature;
    119                 } fat32 __attribute__ ((packed));
     119                } __attribute__ ((packed)) fat32;
    120120        };
    121121} __attribute__ ((packed)) fat_bs_t;
  • uspace/lib/label/src/mbr.c

    r5772aa1 r9f64c1e  
    151151        /*
    152152         * We can't really tell whether this is an MBR. Make sure
    153          * this is not actually the BR of a FAT file system
     153         * this is not actually the BR of a 12/16-bit FAT file system
    154154         */
    155155        if (bs->type[0] == 'F' && bs->type[1] == 'A' && bs->type[2] == 'T') {
     156                rc = EIO;
     157                goto error;
     158        }
     159
     160        /*
     161         * Or a 32-bit FAT file system
     162         */
     163        if (bs->fat32.type[0] == 'F' && bs->fat32.type[1] == 'A' &&
     164            bs->fat32.type[2] == 'T') {
    156165                rc = EIO;
    157166                goto error;
  • uspace/srv/fs/fat/fat.h

    r5772aa1 r9f64c1e  
    136136                        /** Signature. */
    137137                        uint16_t        signature;
    138                 } fat32 __attribute__ ((packed));
     138                } __attribute__ ((packed)) fat32;
    139139        };
    140140} __attribute__ ((packed)) fat_bs_t;
  • uspace/srv/fs/fat/fat_ops.c

    r5772aa1 r9f64c1e  
    10531053
    10541054        rc = fat_directory_open(nodep, &di);
    1055         if (rc != EOK)
    1056                 return rc;
     1055        if (rc != EOK) {
     1056                fat_fs_close(service_id, rfn);
     1057                return rc;
     1058        }
    10571059
    10581060        rc = fat_directory_vollabel_get(&di, label);
    10591061        if (rc != EOK) {
    1060                 if (rc != ENOENT)
     1062                if (rc != ENOENT) {
     1063                        fat_fs_close(service_id, rfn);
    10611064                        return rc;
     1065                }
    10621066
    10631067                label[0] = '\0';
Note: See TracChangeset for help on using the changeset viewer.