diff --git a/[refs] b/[refs] index 233a86dd3e89..25f7d355c0ab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f464246d85d5a5c0fdbf5838b8c58ef59bd82fcc +refs/heads/master: ca0ad83da17b6ba07f9eb5902e69daac90c4fa61 diff --git a/trunk/arch/parisc/kernel/parisc_ksyms.c b/trunk/arch/parisc/kernel/parisc_ksyms.c index 6795dc6c995f..568b2c61ea02 100644 --- a/trunk/arch/parisc/kernel/parisc_ksyms.c +++ b/trunk/arch/parisc/kernel/parisc_ksyms.c @@ -120,11 +120,13 @@ extern void __ashrdi3(void); extern void __ashldi3(void); extern void __lshrdi3(void); extern void __muldi3(void); +extern void __ucmpdi2(void); EXPORT_SYMBOL(__ashrdi3); EXPORT_SYMBOL(__ashldi3); EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__muldi3); +EXPORT_SYMBOL(__ucmpdi2); asmlinkage void * __canonicalize_funcptr_for_compare(void *); EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); diff --git a/trunk/arch/parisc/lib/Makefile b/trunk/arch/parisc/lib/Makefile index 5f2e6904d14a..5651536ac733 100644 --- a/trunk/arch/parisc/lib/Makefile +++ b/trunk/arch/parisc/lib/Makefile @@ -2,6 +2,7 @@ # Makefile for parisc-specific library files # -lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o +lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o \ + ucmpdi2.o obj-y := iomap.o diff --git a/trunk/arch/parisc/lib/ucmpdi2.c b/trunk/arch/parisc/lib/ucmpdi2.c new file mode 100644 index 000000000000..149c016f32c5 --- /dev/null +++ b/trunk/arch/parisc/lib/ucmpdi2.c @@ -0,0 +1,25 @@ +#include + +union ull_union { + unsigned long long ull; + struct { + unsigned int high; + unsigned int low; + } ui; +}; + +int __ucmpdi2(unsigned long long a, unsigned long long b) +{ + union ull_union au = {.ull = a}; + union ull_union bu = {.ull = b}; + + if (au.ui.high < bu.ui.high) + return 0; + else if (au.ui.high > bu.ui.high) + return 2; + if (au.ui.low < bu.ui.low) + return 0; + else if (au.ui.low > bu.ui.low) + return 2; + return 1; +} diff --git a/trunk/arch/x86/boot/compressed/eboot.c b/trunk/arch/x86/boot/compressed/eboot.c index 35ee62fccf98..8615f7581820 100644 --- a/trunk/arch/x86/boot/compressed/eboot.c +++ b/trunk/arch/x86/boot/compressed/eboot.c @@ -258,7 +258,7 @@ static efi_status_t setup_efi_vars(struct boot_params *params) u64 store_size, remaining_size, var_size; efi_status_t status; - if (sys_table->runtime->hdr.revision < EFI_2_00_SYSTEM_TABLE_REVISION) + if (!sys_table->runtime->query_variable_info) return EFI_UNSUPPORTED; data = (struct setup_data *)(unsigned long)params->hdr.setup_data; @@ -266,7 +266,7 @@ static efi_status_t setup_efi_vars(struct boot_params *params) while (data && data->next) data = (struct setup_data *)(unsigned long)data->next; - status = efi_call_phys4((void *)sys_table->runtime->query_variable_info, + status = efi_call_phys4(sys_table->runtime->query_variable_info, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, &store_size, diff --git a/trunk/drivers/firmware/efivars.c b/trunk/drivers/firmware/efivars.c index f4baa11d3644..182ce9471175 100644 --- a/trunk/drivers/firmware/efivars.c +++ b/trunk/drivers/firmware/efivars.c @@ -1628,11 +1628,10 @@ static ssize_t efivar_delete(struct file *filp, struct kobject *kobj, return count; } -static bool variable_is_present(struct efivars *efivars, - efi_char16_t *variable_name, - efi_guid_t *vendor) +static bool variable_is_present(efi_char16_t *variable_name, efi_guid_t *vendor) { struct efivar_entry *entry, *n; + struct efivars *efivars = &__efivars; unsigned long strsize1, strsize2; bool found = false; @@ -1704,8 +1703,8 @@ static void efivar_update_sysfs_entries(struct work_struct *work) if (status != EFI_SUCCESS) { break; } else { - if (!variable_is_present(efivars, - variable_name, &vendor)) { + if (!variable_is_present(variable_name, + &vendor)) { found = true; break; } @@ -2009,8 +2008,7 @@ int register_efivars(struct efivars *efivars, * we'll ever see a different variable name, * and may end up looping here forever. */ - if (variable_is_present(efivars, variable_name, - &vendor_guid)) { + if (variable_is_present(variable_name, &vendor_guid)) { dup_variable_bug(variable_name, &vendor_guid, variable_name_size); status = EFI_NOT_FOUND; diff --git a/trunk/drivers/tty/tty_io.c b/trunk/drivers/tty/tty_io.c index b0452688308c..05400acbc456 100644 --- a/trunk/drivers/tty/tty_io.c +++ b/trunk/drivers/tty/tty_io.c @@ -941,14 +941,6 @@ void start_tty(struct tty_struct *tty) EXPORT_SYMBOL(start_tty); -static void tty_update_time(struct timespec *time) -{ - unsigned long sec = get_seconds(); - sec -= sec % 60; - if ((long)(sec - time->tv_sec) > 0) - time->tv_sec = sec; -} - /** * tty_read - read method for tty device files * @file: pointer to tty file @@ -968,11 +960,10 @@ static ssize_t tty_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { int i; - struct inode *inode = file_inode(file); struct tty_struct *tty = file_tty(file); struct tty_ldisc *ld; - if (tty_paranoia_check(tty, inode, "tty_read")) + if (tty_paranoia_check(tty, file_inode(file), "tty_read")) return -EIO; if (!tty || (test_bit(TTY_IO_ERROR, &tty->flags))) return -EIO; @@ -986,9 +977,6 @@ static ssize_t tty_read(struct file *file, char __user *buf, size_t count, i = -EIO; tty_ldisc_deref(ld); - if (i > 0) - tty_update_time(&inode->i_atime); - return i; } @@ -1089,10 +1077,8 @@ static inline ssize_t do_tty_write( break; cond_resched(); } - if (written) { - tty_update_time(&file_inode(file)->i_mtime); + if (written) ret = written; - } out: tty_write_unlock(tty); return ret; diff --git a/trunk/fs/aio.c b/trunk/fs/aio.c index 1dc8786f4588..3f941f2a3059 100644 --- a/trunk/fs/aio.c +++ b/trunk/fs/aio.c @@ -1029,9 +1029,9 @@ static int aio_read_evt(struct kioctx *ioctx, struct io_event *ent) spin_unlock(&info->ring_lock); out: + kunmap_atomic(ring); dprintk("leaving aio_read_evt: %d h%lu t%lu\n", ret, (unsigned long)ring->head, (unsigned long)ring->tail); - kunmap_atomic(ring); return ret; }