static int acpi_proc_write( struct file *filp, const char __user *buff, unsigned long len, void *data ) #endif { char input[2 * BUFFER_SIZE] = { '\0' }; union acpi_object *args; int nargs, i; char *method; if (len > sizeof(input) - 1) { printk(KERN_ERR "acpi_call: Input too long! (%lu)\n", len); return -ENOSPC; } if (copy_from_user( input, buff, len )) { return -EFAULT; } input[len] = '\0'; if (input[len-1] == '\n') input[len-1] = '\0'; method = parse_acpi_args(input, &nargs, &args); if (method) { do_acpi_call(method, nargs, args); if (args) { for (i=0; i<nargs; i++) if (args[i].type == ACPI_TYPE_BUFFER) kfree(args[i].buffer.pointer); kfree(args); } } return len; }
static int acpi_proc_write( struct file *filp, const char __user *buff, unsigned long len, void *data ) { char input[256] = { '\0' }; if (len > sizeof(input) - 1) { printk(KERN_ERR "acpi_call: Input too long! (%lu)\n", len); return -ENOSPC; } if (copy_from_user( input, buff, len )) { return -EFAULT; } input[len] = '\0'; if (input[len-1] == '\n') input[len-1] = '\0'; do_acpi_call(input); return len; }