Merge "UPSTREAM: Merge PC52 commit '61d5f54' into msm-4.9 (mainline) - 12/06"
diff --git a/arch/Kconfig b/arch/Kconfig
index babac73..a364ece 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -224,6 +224,14 @@
An architecture should select this when it can successfully
build and run with CONFIG_FORTIFY_SOURCE.
+config FORTIFY_COMPILE_CHECK
+ depends on ARCH_HAS_FORTIFY_SOURCE
+ bool
+ help
+ Disable compile time size check for string routines as part
+ of fortify source. Selecting this option will not enforce compile
+ time size check for string functions.
+
# Select if arch init_task initializer is different to init/init_task.c
config ARCH_INIT_TASK
bool
diff --git a/drivers/soc/qcom/qbt1000.c b/drivers/soc/qcom/qbt1000.c
index 86f314a..b7472a4 100644
--- a/drivers/soc/qcom/qbt1000.c
+++ b/drivers/soc/qcom/qbt1000.c
@@ -471,7 +471,7 @@
case QBT1000_SEND_TZCMD:
{
struct qbt1000_send_tz_cmd tzcmd;
- void *rsp_buf;
+ void *rsp_buf = NULL;
if (copy_from_user(&tzcmd, priv_arg,
sizeof(tzcmd))
@@ -861,8 +861,8 @@
static irqreturn_t qbt1000_ipc_irq_handler(int irq, void *dev_id)
{
uint8_t *msg_buffer;
- struct fw_ipc_cmd *rx_cmd;
- struct fw_ipc_header *header;
+ struct fw_ipc_cmd *rx_cmd = NULL;
+ struct fw_ipc_header *header = NULL;
int i, j;
uint32_t rxipc = FP_APP_CMD_RX_IPC;
struct qbt1000_drvdata *drvdata = (struct qbt1000_drvdata *)dev_id;
diff --git a/include/linux/string.h b/include/linux/string.h
index 0463dfb..4691e7f 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -173,9 +173,16 @@
#define __RENAME(x) __asm__(#x)
void fortify_panic(const char *name) __noreturn __cold;
+
+#ifdef CONFIG_FORTIFY_COMPILE_CHECK
void __read_overflow(void) __compiletime_error("detected read beyond size of object passed as 1st parameter");
void __read_overflow2(void) __compiletime_error("detected read beyond size of object passed as 2nd parameter");
void __write_overflow(void) __compiletime_error("detected write beyond size of object passed as 1st parameter");
+#else
+#define __read_overflow(void) do { } while (0)
+#define __read_overflow2(void) do { } while (0)
+#define __write_overflow(void) do { } while (0)
+#endif
#if !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
__FORTIFY_INLINE char *strncpy(char *p, const char *q, __kernel_size_t size)
diff --git a/kernel/compat.c b/kernel/compat.c
index 333d364..1cd7051 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -109,7 +109,7 @@
struct timezone __user *, tz)
{
struct timeval user_tv;
- struct timespec new_ts;
+ struct timespec new_ts = {0};
struct timezone new_tz;
if (tv) {
diff --git a/kernel/time/time.c b/kernel/time/time.c
index bd62fb8..1b2d209 100644
--- a/kernel/time/time.c
+++ b/kernel/time/time.c
@@ -194,7 +194,7 @@
struct timezone __user *, tz)
{
struct timeval user_tv;
- struct timespec new_ts;
+ struct timespec new_ts = {0};
struct timezone new_tz;
if (tv) {