Re: [patch 00/12] Fix ppc64's writing to struct file_operations
On Mon, 2007-01-15 at 10:55 +1100, Stephen Rothwell wrote: > On Sun, 14 Jan 2007 14:54:11 + Alan <[EMAIL PROTECTED]> wrote: > > > > This doesn't appea to do the same thing at all. You need to select > > between two sets of const inode ops instead, otherwise you turn write on > > arbitarily. > > Or something like below ... (compile tested on pseries, iseries and combined). ok I was about to do this instead... but you beat me to it.. thanks! Acked-by: Arjan van de Ven <[EMAIL PROTECTED]> -- if you want to mail me at work (you don't), use arjan (at) linux.intel.com Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [patch 00/12] Fix ppc64's writing to struct file_operations
On Sun, 14 Jan 2007 14:54:11 + Alan <[EMAIL PROTECTED]> wrote: > > This doesn't appea to do the same thing at all. You need to select > between two sets of const inode ops instead, otherwise you turn write on > arbitarily. Or something like below ... (compile tested on pseries, iseries and combined). -- Cheers, Stephen Rothwell[EMAIL PROTECTED] http://www.canb.auug.org.au/~sfr/ diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index 41c05dc..0de5a08 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c @@ -439,6 +439,10 @@ static ssize_t lparcfg_write(struct file *file, const char __user * buf, ssize_t retval = -ENOMEM; + if (!firmware_has_feature(FW_FEATURE_SPLPAR) || + firmware_has_feature(FW_FEATURE_ISERIES)) + return -EINVAL; + kbuf = kmalloc(count, GFP_KERNEL); if (!kbuf) goto out; @@ -517,7 +521,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) static ssize_t lparcfg_write(struct file *file, const char __user * buf, size_t count, loff_t * off) { - return count; + return -EINVAL; } #endif /* CONFIG_PPC_PSERIES */ @@ -570,6 +574,7 @@ static int lparcfg_open(struct inode *inode, struct file *file) struct file_operations lparcfg_fops = { .owner = THIS_MODULE, .read = seq_read, + .write = lparcfg_write, .open = lparcfg_open, .release= single_release, }; @@ -581,10 +586,8 @@ int __init lparcfg_init(void) /* Allow writing if we have FW_FEATURE_SPLPAR */ if (firmware_has_feature(FW_FEATURE_SPLPAR) && - !firmware_has_feature(FW_FEATURE_ISERIES)) { - lparcfg_fops.write = lparcfg_write; + !firmware_has_feature(FW_FEATURE_ISERIES)) mode |= S_IWUSR; - } ent = create_proc_entry("ppc64/lparcfg", mode, NULL); if (ent) { - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [patch 00/12] Fix ppc64's writing to struct file_operations
> .read = seq_read, > + .write = lparcfg_write, > .open = lparcfg_open, > .release= single_release, > }; > @@ -581,10 +582,8 @@ int __init lparcfg_init(void) > > /* Allow writing if we have FW_FEATURE_SPLPAR */ > if (firmware_has_feature(FW_FEATURE_SPLPAR) && > - !firmware_has_feature(FW_FEATURE_ISERIES)) { > - lparcfg_fops.write = lparcfg_write; > + !firmware_has_feature(FW_FEATURE_ISERIES)) > mode |= S_IWUSR; > - } This doesn't appea to do the same thing at all. You need to select between two sets of const inode ops instead, otherwise you turn write on arbitarily. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [patch 00/12] Fix ppc64's writing to struct file_operations
.read = seq_read, + .write = lparcfg_write, .open = lparcfg_open, .release= single_release, }; @@ -581,10 +582,8 @@ int __init lparcfg_init(void) /* Allow writing if we have FW_FEATURE_SPLPAR */ if (firmware_has_feature(FW_FEATURE_SPLPAR) - !firmware_has_feature(FW_FEATURE_ISERIES)) { - lparcfg_fops.write = lparcfg_write; + !firmware_has_feature(FW_FEATURE_ISERIES)) mode |= S_IWUSR; - } This doesn't appea to do the same thing at all. You need to select between two sets of const inode ops instead, otherwise you turn write on arbitarily. - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [patch 00/12] Fix ppc64's writing to struct file_operations
On Sun, 14 Jan 2007 14:54:11 + Alan [EMAIL PROTECTED] wrote: This doesn't appea to do the same thing at all. You need to select between two sets of const inode ops instead, otherwise you turn write on arbitarily. Or something like below ... (compile tested on pseries, iseries and combined). -- Cheers, Stephen Rothwell[EMAIL PROTECTED] http://www.canb.auug.org.au/~sfr/ diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index 41c05dc..0de5a08 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c @@ -439,6 +439,10 @@ static ssize_t lparcfg_write(struct file *file, const char __user * buf, ssize_t retval = -ENOMEM; + if (!firmware_has_feature(FW_FEATURE_SPLPAR) || + firmware_has_feature(FW_FEATURE_ISERIES)) + return -EINVAL; + kbuf = kmalloc(count, GFP_KERNEL); if (!kbuf) goto out; @@ -517,7 +521,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) static ssize_t lparcfg_write(struct file *file, const char __user * buf, size_t count, loff_t * off) { - return count; + return -EINVAL; } #endif /* CONFIG_PPC_PSERIES */ @@ -570,6 +574,7 @@ static int lparcfg_open(struct inode *inode, struct file *file) struct file_operations lparcfg_fops = { .owner = THIS_MODULE, .read = seq_read, + .write = lparcfg_write, .open = lparcfg_open, .release= single_release, }; @@ -581,10 +586,8 @@ int __init lparcfg_init(void) /* Allow writing if we have FW_FEATURE_SPLPAR */ if (firmware_has_feature(FW_FEATURE_SPLPAR) - !firmware_has_feature(FW_FEATURE_ISERIES)) { - lparcfg_fops.write = lparcfg_write; + !firmware_has_feature(FW_FEATURE_ISERIES)) mode |= S_IWUSR; - } ent = create_proc_entry(ppc64/lparcfg, mode, NULL); if (ent) { - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [patch 00/12] Fix ppc64's writing to struct file_operations
On Mon, 2007-01-15 at 10:55 +1100, Stephen Rothwell wrote: On Sun, 14 Jan 2007 14:54:11 + Alan [EMAIL PROTECTED] wrote: This doesn't appea to do the same thing at all. You need to select between two sets of const inode ops instead, otherwise you turn write on arbitarily. Or something like below ... (compile tested on pseries, iseries and combined). ok I was about to do this instead... but you beat me to it.. thanks! Acked-by: Arjan van de Ven [EMAIL PROTECTED] -- if you want to mail me at work (you don't), use arjan (at) linux.intel.com Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[patch 00/12] Fix ppc64's writing to struct file_operations
From: Arjan van de Ven <[EMAIL PROTECTED]> Subject: [patch 00/12] Fix ppc64's writing to struct file_operations the ppc64 code needlessly wrote to a struct file_operations variable; this patch turns this into a compile time initialization instead. Signed-off-by: Arjan van de Ven <[EMAIL PROTECTED]> Index: linux-2.6/arch/powerpc/kernel/lparcfg.c === --- linux-2.6.orig/arch/powerpc/kernel/lparcfg.c +++ linux-2.6/arch/powerpc/kernel/lparcfg.c @@ -570,6 +570,7 @@ static int lparcfg_open(struct inode *in struct file_operations lparcfg_fops = { .owner = THIS_MODULE, .read = seq_read, + .write = lparcfg_write, .open = lparcfg_open, .release= single_release, }; @@ -581,10 +582,8 @@ int __init lparcfg_init(void) /* Allow writing if we have FW_FEATURE_SPLPAR */ if (firmware_has_feature(FW_FEATURE_SPLPAR) && - !firmware_has_feature(FW_FEATURE_ISERIES)) { - lparcfg_fops.write = lparcfg_write; + !firmware_has_feature(FW_FEATURE_ISERIES)) mode |= S_IWUSR; - } ent = create_proc_entry("ppc64/lparcfg", mode, NULL); if (ent) { - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[patch 00/12] Fix ppc64's writing to struct file_operations
From: Arjan van de Ven [EMAIL PROTECTED] Subject: [patch 00/12] Fix ppc64's writing to struct file_operations the ppc64 code needlessly wrote to a struct file_operations variable; this patch turns this into a compile time initialization instead. Signed-off-by: Arjan van de Ven [EMAIL PROTECTED] Index: linux-2.6/arch/powerpc/kernel/lparcfg.c === --- linux-2.6.orig/arch/powerpc/kernel/lparcfg.c +++ linux-2.6/arch/powerpc/kernel/lparcfg.c @@ -570,6 +570,7 @@ static int lparcfg_open(struct inode *in struct file_operations lparcfg_fops = { .owner = THIS_MODULE, .read = seq_read, + .write = lparcfg_write, .open = lparcfg_open, .release= single_release, }; @@ -581,10 +582,8 @@ int __init lparcfg_init(void) /* Allow writing if we have FW_FEATURE_SPLPAR */ if (firmware_has_feature(FW_FEATURE_SPLPAR) - !firmware_has_feature(FW_FEATURE_ISERIES)) { - lparcfg_fops.write = lparcfg_write; + !firmware_has_feature(FW_FEATURE_ISERIES)) mode |= S_IWUSR; - } ent = create_proc_entry(ppc64/lparcfg, mode, NULL); if (ent) { - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/