{"push_id":626280806,"size":3,"distinct_size":3,"ref":"refs/heads/newstable2","head":"74e2dc177b36c0162b936efa6531b761cccb7911","before":"ccbf6a2ac6a87add4f60bb9d5d4bc22ab8e9f91d","commits":[{"sha":"c32b17dc0be443bd49ed82e48b8d66461af9ae02","author":{"email":"749e12e18869a210449c40d360fd34eba62d827d@gmail.com","name":"jgcaap"},"message":"Revert \"arm: lib: Fix makefile bug\"\n\nThis reverts commit 0b952d867d00b5ceb90cd06135702f874e597770.","distinct":true,"url":"https://api.github.com/repos/jgcaap/android_kernel_oneplus_msm8974/commits/c32b17dc0be443bd49ed82e48b8d66461af9ae02"},{"sha":"c6e16911d28c0c110d43e8d32ddbf7858973c9e0","author":{"email":"fdd63d6d2cf1fcca4a32e9bdba550776ff3f9f3c@motorola.com","name":"Hong-Mei Li"},"message":"arm: lib: Fix makefile bug\n\nWhen HAS_MACH_MEMUTILS is defined, two version of memcpy.S would\nbe built at the same time, fix the issue here.\n\nSigned-off-by: Hong-Mei Li <a21834@motorola.com>\nReviewed-on: http://gerrit.mot.com/629464\nSLTApproved: Slta Waiver <sltawvr@motorola.com>\nTested-by: Jira Key <jirakey@motorola.com>\nReviewed-by: Yi-Wei Zhao <gbjc64@motorola.com>\nSubmit-Approved: Jira Key <jirakey@motorola.com>\nSigned-off-by: Pranav Vashi <neobuddy89@gmail.com>","distinct":true,"url":"https://api.github.com/repos/jgcaap/android_kernel_oneplus_msm8974/commits/c6e16911d28c0c110d43e8d32ddbf7858973c9e0"},{"sha":"74e2dc177b36c0162b936efa6531b761cccb7911","author":{"email":"b913f13ef92ac157955c954ccaaff7be065faba4@arm.com","name":"Will Deacon"},"message":"ARM: 7449/1: use generic strnlen_user and strncpy_from_user functions\n\nThis patch implements the word-at-a-time interface for ARM using the\nsame algorithm as x86. We use the fls macro from ARMv5 onwards, where\nwe have a clz instruction available which saves us a mov instruction\nwhen targetting Thumb-2. For older CPUs, we use the magic 0x0ff0001\nconstant. Big-endian configurations make use of the implementation from\nasm-generic.\n\nWith this implemented, we can replace our byte-at-a-time strnlen_user\nand strncpy_from_user functions with the optimised generic versions.\n\nReviewed-by: Nicolas Pitre <nico@linaro.org>\nSigned-off-by: Will Deacon <will.deacon@arm.com>\nSigned-off-by: Russell King <rmk+kernel@arm.linux.org.uk>\n\nlib: Sparc's strncpy_from_user is generic enough, move under lib/\n\nTo use this, an architecture simply needs to:\n\n1) Provide a user_addr_max() implementation via asm/uaccess.h\n\n2) Add \"select GENERIC_STRNCPY_FROM_USER\" to their arch Kcnfig\n\n3) Remove the existing strncpy_from_user() implementation and symbol\n   exports their architecture had.\n\nSigned-off-by: David S. Miller <davem@davemloft.net>\nAcked-by: David Howells <dhowells@redhat.com>\n\nlib: add generic strnlen_user() function\n\nThis adds a new generic optimized strnlen_user() function that uses the\n<asm/word-at-a-time.h> infrastructure to portably do efficient string\nhandling.\n\nIn many ways, strnlen is much simpler than strncpy, and in particular we\ncan always pre-align the words we load from memory.  That means that all\nthe worries about alignment etc are a non-issue, so this one can easily\nbe used on any architecture.  You obviously do have to do the\nappropriate word-at-a-time.h macros.\n\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\nkernel: Move REPEAT_BYTE definition into linux/kernel.h\n\nAnd make sure that everything using it explicitly includes\nthat header file.\n\nSigned-off-by: David S. Miller <davem@davemloft.net>\n\nword-at-a-time: make the interfaces truly generic\n\nThis changes the interfaces in <asm/word-at-a-time.h> to be a bit more\ncomplicated, but a lot more generic.\n\nIn particular, it allows us to really do the operations efficiently on\nboth little-endian and big-endian machines, pretty much regardless of\nmachine details.  For example, if you can rely on a fast population\ncount instruction on your architecture, this will allow you to make your\noptimized <asm/word-at-a-time.h> file with that.\n\nNOTE! The \"generic\" version in include/asm-generic/word-at-a-time.h is\nnot truly generic, it actually only works on big-endian.  Why? Because\non little-endian the generic algorithms are wasteful, since you can\ninevitably do better. The x86 implementation is an example of that.\n\n(The only truly non-generic part of the asm-generic implementation is\nthe \"find_zero()\" function, and you could make a little-endian version\nof it.  And if the Kbuild infrastructure allowed us to pick a particular\nheader file, that would be lovely)\n\nThe <asm/word-at-a-time.h> functions are as follows:\n\n- WORD_AT_A_TIME_CONSTANTS: specific constants that the algorithm\n   uses.\n\n- has_zero(): take a word, and determine if it has a zero byte in it.\n   It gets the word, the pointer to the constant pool, and a pointer to\n   an intermediate \"data\" field it can set.\n\n   This is the \"quick-and-dirty\" zero tester: it's what is run inside\n   the hot loops.\n\n- \"prep_zero_mask()\": take the word, the data that has_zero() produced,\n   and the constant pool, and generate an *exact* mask of which byte had\n   the first zero.  This is run directly *outside* the loop, and allows\n   the \"has_zero()\" function to answer the \"is there a zero byte\"\n   question without necessarily getting exactly *which* byte is the\n   first one to contain a zero.\n\n   If you do multiple byte lookups concurrently (eg \"hash_name()\", which\n   looks for both NUL and '/' bytes), after you've done the\nprep_zero_mask()\n   phase, the result of those can be or'ed together to get the \"either\n   or\" case.\n\n- The result from \"prep_zero_mask()\" can then be fed into \"find_zero()\"\n   (to find the byte offset of the first byte that was zero) or into\n   \"zero_bytemask()\" (to find the bytemask of the bytes preceding the\n   zero byte).\n\n   The existence of zero_bytemask() is optional, and is not necessary\n   for the normal string routines.  But dentry name hashing needs it, so\n   if you enable DENTRY_WORD_AT_A_TIME you need to expose it.\n\nThis changes the generic strncpy_from_user() function and the dentry\nhashing functions to use these modified word-at-a-time interfaces.  This\ngets us back to the optimized state of the x86 strncpy that we lost in\nthe previous commit when moving over to the generic version.\n\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\nARM: 7450/1: dcache: select DCACHE_WORD_ACCESS for little-endian ARMv6+\nCPUs\n\nDCACHE_WORD_ACCESS uses the word-at-a-time API for optimised string\ncomparisons in the vfs layer.\n\nThis patch implements support for load_unaligned_zeropad for ARM CPUs\nwith native support for unaligned memory accesses (v6+) when running\nlittle-endian.\n\nChange-Id: Ifdf8207f2581f93870eb0e627f5d12f97c4be7cc\nReviewed-by: Nicolas Pitre <nico@linaro.org>\nSigned-off-by: Will Deacon <will.deacon@arm.com>\nSigned-off-by: Russell King <rmk+kernel@arm.linux.org.uk>\nSigned-off-by: Pranav Vashi <neobuddy89@gmail.com>\n\nConflicts:\n\tarch/openrisc/include/asm/Kbuild\n\tarch/sparc/Kconfig\n\tarch/sparc/include/asm/Kbuild\n\tarch/sparc/lib/usercopy.c\n\tarch/x86/include/asm/word-at-a-time.h\n\nConflicts:\n\tarch/arm/Kconfig\n\tarch/sparc/Kconfig","distinct":true,"url":"https://api.github.com/repos/jgcaap/android_kernel_oneplus_msm8974/commits/74e2dc177b36c0162b936efa6531b761cccb7911"}]}