From adfaafa19f447a5691675f0b059fe1933b9fafb6 Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Sat, 27 Jul 2002 06:07:35 -0700 Subject: [PATCH] Fix "make xconfig" --- fs/partitions/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'fs') diff --git a/fs/partitions/Config.in b/fs/partitions/Config.in index eff56b137b0a..415ac1a6c45c 100644 --- a/fs/partitions/Config.in +++ b/fs/partitions/Config.in @@ -25,7 +25,7 @@ if [ "$CONFIG_PARTITION_ADVANCED" = "y" ]; then bool ' Solaris (x86) partition table support' CONFIG_SOLARIS_X86_PARTITION bool ' Unixware slices support' CONFIG_UNIXWARE_DISKLABEL fi - dep_bool ' Windows Logical Disk Manager (Dynamic Disk) support' CONFIG_LDM_PARTITION + bool ' Windows Logical Disk Manager (Dynamic Disk) support' CONFIG_LDM_PARTITION if [ "$CONFIG_LDM_PARTITION" = "y" ]; then bool ' Windows LDM extra logging' CONFIG_LDM_DEBUG fi -- cgit v1.2.3 From cab49a97104a6f6996ea42418515fd3dbc42f199 Mon Sep 17 00:00:00 2001 From: "Andries E. Brouwer" Date: Sat, 27 Jul 2002 06:08:38 -0700 Subject: [PATCH] partition fix The patch below does two things: (i) fixes a small bug in the new partition code This is the final chunk s/n/slot/. I'll refrain from giving a vi script. This is uncontroversial. (ii) removes ancient garbage concerning disk managers This may well be controversial. (Long ago, when disks became larger than 500 MB, lots of tricks were invented to keep DOS happy. Both hardware tricks and software tricks. One of the software tricks was the invention of boot managers. There have been many of those. The Linux kernel has had support for two of them: OnTrack Disk Manager and EZdrive. More precisely: there have been many versions of both OnTrack Disk Manager and EZdrive, and the kernel had support for a few of these versions. I think the time has come to remove the automatic support - every now and then it bites some innocent user, and the support is not really needed any longer, and the support is for outdated versions of these boot managers. No doubt it will turn out that users still exist that use some form of this stuff, but I would prefer to support them by explicit kernel boot parameters, rather than by code that guesses what might be the right thing to do. The patch below just rips out the old stuff. Depending on the screams this might provoke I expect to add some boot parameters.) --- fs/partitions/msdos.c | 102 +------------------------------------------------- 1 file changed, 1 insertion(+), 101 deletions(-) (limited to 'fs') diff --git a/fs/partitions/msdos.c b/fs/partitions/msdos.c index 5d0bb6074fe4..61b0bc9bc02b 100644 --- a/fs/partitions/msdos.c +++ b/fs/partitions/msdos.c @@ -385,87 +385,6 @@ static struct { {SOLARIS_X86_PARTITION, parse_solaris_x86}, {0, NULL}, }; -/* - * Look for various forms of IDE disk geometry translation - */ -static int handle_ide_mess(struct block_device *bdev) -{ -#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) - Sector sect; - unsigned char *data; - kdev_t dev = to_kdev_t(bdev->bd_dev); - unsigned int sig; - int heads = 0; - struct partition *p; - int i; -#ifdef CONFIG_BLK_DEV_IDE_MODULE - if (!ide_xlate_1024) - return 1; -#endif - /* - * The i386 partition handling programs very often - * make partitions end on cylinder boundaries. - * There is no need to do so, and Linux fdisk doesn't always - * do this, and Windows NT on Alpha doesn't do this either, - * but still, this helps to guess #heads. - */ - data = read_dev_sector(bdev, 0, §); - if (!data) - return -1; - if (!msdos_magic_present(data + 510)) { - put_dev_sector(sect); - return 0; - } - sig = le16_to_cpu(*(unsigned short *)(data + 2)); - p = (struct partition *) (data + 0x1be); - for (i = 0; i < 4; i++) { - struct partition *q = &p[i]; - if (NR_SECTS(q)) { - if ((q->sector & 63) == 1 && - (q->end_sector & 63) == 63) - heads = q->end_head + 1; - break; - } - } - if (SYS_IND(p) == EZD_PARTITION) { - /* - * Accesses to sector 0 must go to sector 1 instead. - */ - if (ide_xlate_1024(dev, -1, heads, " [EZD]")) - goto reread; - } else if (SYS_IND(p) == DM6_PARTITION) { - - /* - * Everything on the disk is offset by 63 sectors, - * including a "new" MBR with its own partition table. - */ - if (ide_xlate_1024(dev, 1, heads, " [DM6:DDO]")) - goto reread; - } else if (sig <= 0x1ae && - data[sig] == 0xAA && data[sig+1] == 0x55 && - (data[sig+2] & 1)) { - /* DM6 signature in MBR, courtesy of OnTrack */ - (void) ide_xlate_1024 (dev, 0, heads, " [DM6:MBR]"); - } else if (SYS_IND(p) == DM6_AUX1PARTITION || - SYS_IND(p) == DM6_AUX3PARTITION) { - /* - * DM6 on other than the first (boot) drive - */ - (void) ide_xlate_1024(dev, 0, heads, " [DM6:AUX]"); - } else { - (void) ide_xlate_1024(dev, 2, heads, " [PTBL]"); - } - put_dev_sector(sect); - return 1; - -reread: - put_dev_sector(sect); - /* Flush the cache */ - invalidate_bdev(bdev, 1); - truncate_inode_pages(bdev->bd_inode->i_mapping, 0); -#endif /* defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) */ - return 1; -} int msdos_partition(struct parsed_partitions *state, struct block_device *bdev) { @@ -474,11 +393,7 @@ int msdos_partition(struct parsed_partitions *state, struct block_device *bdev) unsigned char *data; struct partition *p; int slot; - int err; - err = handle_ide_mess(bdev); - if (err <= 0) - return err; data = read_dev_sector(bdev, 0, §); if (!data) return -1; @@ -524,21 +439,6 @@ int msdos_partition(struct parsed_partitions *state, struct block_device *bdev) state->parts[slot].flags = 1; } - /* - * Check for old-style Disk Manager partition table - */ - if (msdos_magic_present(data + 0xfc)) { - p = (struct partition *) (0x1be + data); - for (slot = 4 ; slot < 16 ; slot++, state->next++) { - p--; - if (state->next == state->limit) - break; - if (!(START_SECT(p) && NR_SECTS(p))) - continue; - put_partition(state, state->next, - START_SECT(p), NR_SECTS(p)); - } - } printk("\n"); /* second pass - output for each on a separate line */ @@ -556,7 +456,7 @@ int msdos_partition(struct parsed_partitions *state, struct block_device *bdev) if (!subtypes[n].parse) continue; subtypes[n].parse(state, bdev, START_SECT(p)*sector_size, - NR_SECTS(p)*sector_size, n); + NR_SECTS(p)*sector_size, slot); } put_dev_sector(sect); return 1; -- cgit v1.2.3 From c997a03d28c9c79cd65ecfec3bd08097cb20f2bc Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Sat, 27 Jul 2002 06:08:53 -0700 Subject: [PATCH] LSM file locking patch is bogus - Remove third argument from file_lock security op. Whether the lock is blocking or not cannot make any difference to a security module! - Fix the call in sys_flock to pass the translated lock command, not the original. - Add a call in fcntl_setlease. If they're going to know about two types of lock, let's tell them about the third too. --- fs/locks.c | 12 ++++++------ include/linux/security.h | 3 +-- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'fs') diff --git a/fs/locks.c b/fs/locks.c index cb801127400a..3b606b44e7df 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -1242,6 +1242,9 @@ int fcntl_setlease(unsigned int fd, struct file *filp, long arg) return -EACCES; if (!S_ISREG(inode->i_mode)) return -EINVAL; + error = security_ops->file_lock(filp, arg); + if (error) + return error; lock_kernel(); @@ -1359,8 +1362,7 @@ asmlinkage long sys_flock(unsigned int fd, unsigned int cmd) if (error < 0) goto out_putf; - error = security_ops->file_lock(filp, cmd, - (cmd & LOCK_NB) ? 0 : 1); + error = security_ops->file_lock(filp, lock->fl_type); if (error) goto out_putf; @@ -1494,8 +1496,7 @@ int fcntl_setlk(struct file *filp, unsigned int cmd, struct flock *l) goto out; } - error = security_ops->file_lock(filp, file_lock->fl_type, - cmd == F_SETLKW); + error = security_ops->file_lock(filp, file_lock->fl_type); if (error) goto out; @@ -1618,8 +1619,7 @@ int fcntl_setlk64(struct file *filp, unsigned int cmd, struct flock64 *l) goto out; } - error = security_ops->file_lock(filp, file_lock->fl_type, - cmd == F_SETLKW64); + error = security_ops->file_lock(filp, file_lock->fl_type); if (error) goto out; diff --git a/include/linux/security.h b/include/linux/security.h index 156e9ddce632..34fd73a0fed2 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -407,7 +407,6 @@ struct swap_info_struct; * @file contains the file structure. * @cmd contains the posix-translated lock operation to perform * (e.g. F_RDLCK, F_WRLCK). - * @blocking indicates if the request is for a blocking lock. * Return 0 if permission is granted. * @file_fcntl: * Check permission before allowing the file operation specified by @cmd @@ -753,7 +752,7 @@ struct security_operations { int (*file_mmap) (struct file * file, unsigned long prot, unsigned long flags); int (*file_mprotect) (struct vm_area_struct * vma, unsigned long prot); - int (*file_lock) (struct file * file, unsigned int cmd, int blocking); + int (*file_lock) (struct file * file, unsigned int cmd); int (*file_fcntl) (struct file * file, unsigned int cmd, unsigned long arg); int (*file_set_fowner) (struct file * file); -- cgit v1.2.3