Skip to content

Commit

Permalink
Initial commit of G920F Marshmallow Samsung Sources (G920FXXS4DPJ2)
Browse files Browse the repository at this point in the history
  • Loading branch information
WildfireDEV committed Dec 25, 2016
1 parent 66bf12d commit 23aff23
Show file tree
Hide file tree
Showing 37 changed files with 135 additions and 1,062 deletions.
2 changes: 1 addition & 1 deletion arch/arm/include/asm/thread_info.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ struct thread_info {
struct cpu_context_save cpu_context; /* cpu context */
__u32 syscall; /* syscall number */
__u8 used_cp[16]; /* thread used copro */
unsigned long tp_value;
unsigned long tp_value[2]; /* TLS registers */
#ifdef CONFIG_CRUNCH
struct crunch_state crunchstate;
#endif
Expand Down
40 changes: 27 additions & 13 deletions arch/arm/include/asm/tls.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,30 @@
#define __ASMARM_TLS_H

#ifdef __ASSEMBLY__
.macro set_tls_none, tp, tmp1, tmp2
#include <asm/asm-offsets.h>
.macro switch_tls_none, base, tp, tpuser, tmp1, tmp2
.endm

.macro set_tls_v6k, tp, tmp1, tmp2
.macro switch_tls_v6k, base, tp, tpuser, tmp1, tmp2
mrc p15, 0, \tmp2, c13, c0, 2 @ get the user r/w register
mcr p15, 0, \tp, c13, c0, 3 @ set TLS register
mov \tmp1, #0
mcr p15, 0, \tmp1, c13, c0, 2 @ clear user r/w TLS register
mcr p15, 0, \tpuser, c13, c0, 2 @ and the user r/w register
str \tmp2, [\base, #TI_TP_VALUE + 4] @ save it
.endm

.macro set_tls_v6, tp, tmp1, tmp2
.macro switch_tls_v6, base, tp, tpuser, tmp1, tmp2
ldr \tmp1, =elf_hwcap
ldr \tmp1, [\tmp1, #0]
mov \tmp2, #0xffff0fff
tst \tmp1, #HWCAP_TLS @ hardware TLS available?
mcrne p15, 0, \tp, c13, c0, 3 @ yes, set TLS register
movne \tmp1, #0
mcrne p15, 0, \tmp1, c13, c0, 2 @ clear user r/w TLS register
streq \tp, [\tmp2, #-15] @ set TLS value at 0xffff0ff0
mrcne p15, 0, \tmp2, c13, c0, 2 @ get the user r/w register
mcrne p15, 0, \tp, c13, c0, 3 @ yes, set TLS register
mcrne p15, 0, \tpuser, c13, c0, 2 @ set user r/w register
strne \tmp2, [\base, #TI_TP_VALUE + 4] @ save it
.endm

.macro set_tls_software, tp, tmp1, tmp2
.macro switch_tls_software, base, tp, tpuser, tmp1, tmp2
mov \tmp1, #0xffff0fff
str \tp, [\tmp1, #-15] @ set TLS value at 0xffff0ff0
.endm
Expand All @@ -31,19 +34,30 @@
#ifdef CONFIG_TLS_REG_EMUL
#define tls_emu 1
#define has_tls_reg 1
#define set_tls set_tls_none
#define switch_tls switch_tls_none
#elif defined(CONFIG_CPU_V6)
#define tls_emu 0
#define has_tls_reg (elf_hwcap & HWCAP_TLS)
#define set_tls set_tls_v6
#define switch_tls switch_tls_v6
#elif defined(CONFIG_CPU_32v6K)
#define tls_emu 0
#define has_tls_reg 1
#define set_tls set_tls_v6k
#define switch_tls switch_tls_v6k
#else
#define tls_emu 0
#define has_tls_reg 0
#define set_tls set_tls_software
#define switch_tls switch_tls_software
#endif

#ifndef __ASSEMBLY__
static inline unsigned long get_tpuser(void)
{
unsigned long reg = 0;

if (has_tls_reg && !tls_emu)
__asm__("mrc p15, 0, %0, c13, c0, 2" : "=r" (reg));

return reg;
}
#endif
#endif /* __ASMARM_TLS_H */
5 changes: 3 additions & 2 deletions arch/arm/kernel/entry-armv.S
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -685,15 +685,16 @@ ENTRY(__switch_to)
UNWIND(.fnstart )
UNWIND(.cantunwind )
add ip, r1, #TI_CPU_SAVE
ldr r3, [r2, #TI_TP_VALUE]
ARM( stmia ip!, {r4 - sl, fp, sp, lr} ) @ Store most regs on stack
THUMB( stmia ip!, {r4 - sl, fp} ) @ Store most regs on stack
THUMB( str sp, [ip], #4 )
THUMB( str lr, [ip], #4 )
ldr r4, [r2, #TI_TP_VALUE]
ldr r5, [r2, #TI_TP_VALUE + 4]
#ifdef CONFIG_CPU_USE_DOMAINS
ldr r6, [r2, #TI_CPU_DOMAIN]
#endif
set_tls r3, r4, r5
switch_tls r1, r4, r5, r3, r7
#if defined(CONFIG_CC_STACKPROTECTOR) && !defined(CONFIG_SMP)
ldr r7, [r2, #TI_TASK]
ldr r8, =__stack_chk_guard
Expand Down
4 changes: 3 additions & 1 deletion arch/arm/kernel/process.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
#include <asm/thread_notify.h>
#include <asm/stacktrace.h>
#include <asm/mach/time.h>
#include <asm/tls.h>

#include <mach/exynos-ss.h>

Expand Down Expand Up @@ -544,7 +545,8 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start,
clear_ptrace_hw_breakpoint(p);

if (clone_flags & CLONE_SETTLS)
thread->tp_value = childregs->ARM_r3;
thread->tp_value[0] = childregs->ARM_r3;
thread->tp_value[1] = get_tpuser();

thread_notify(THREAD_NOTIFY_COPY, thread);

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/kernel/ptrace.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -849,7 +849,7 @@ long arch_ptrace(struct task_struct *child, long request,
#endif

case PTRACE_GET_THREAD_AREA:
ret = put_user(task_thread_info(child)->tp_value,
ret = put_user(task_thread_info(child)->tp_value[0],
datap);
break;

Expand Down
4 changes: 2 additions & 2 deletions arch/arm/kernel/traps.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
return regs->ARM_r0;

case NR(set_tls):
thread->tp_value = regs->ARM_r0;
thread->tp_value[0] = regs->ARM_r0;
if (tls_emu)
return 0;
if (has_tls_reg) {
Expand Down Expand Up @@ -709,7 +709,7 @@ static int get_tp_trap(struct pt_regs *regs, unsigned int instr)
int reg = (instr >> 12) & 15;
if (reg == 15)
return 1;
regs->uregs[reg] = current_thread_info()->tp_value;
regs->uregs[reg] = current_thread_info()->tp_value[0];
regs->ARM_pc += 4;
return 0;
}
Expand Down
Binary file removed arch/arm64/kernel/vdso/vdso.so
Binary file not shown.
Binary file removed arch/arm64/kernel/vdso/vdso.so.dbg
Binary file not shown.
3 changes: 2 additions & 1 deletion drivers/char/diag/diagchar_core.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -1796,7 +1796,8 @@ static ssize_t diagchar_write(struct file *file, const char __user *buf,
return err;
}
if (pkt_type == CALLBACK_DATA_TYPE) {
if (payload_size > driver->itemsize) {
if (payload_size > driver->itemsize ||
payload_size <= MIN_SIZ_ALLOW) {
pr_err("diag: Dropping packet, invalid packet size. Current payload size %d\n",
payload_size);
driver->dropped_count++;
Expand Down
11 changes: 8 additions & 3 deletions drivers/misc/mipi-lli/exynos-mipi-lli.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -925,7 +925,7 @@ int mipi_lli_get_setting(struct mipi_lli *lli)
return 0;
}

#ifdef CONFIG_DEBUG_FS
#ifdef CONFIG_LLI_DEBUG_FS

static ssize_t debugfs_dump(struct file *file,
char __user *user_buf, size_t count, loff_t *ppos)
Expand All @@ -937,9 +937,14 @@ static ssize_t debugfs_dump(struct file *file,
struct mipi_lli_dump *dump;

lli = file->private_data;
dump = &lli->dump;
if (!lli)
return 0;

if (!lli || !dump)
if(!lli->is_debug_possible)
return 0;

dump = &lli->dump;
if (!dump)
return 0;

buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
Expand Down
4 changes: 4 additions & 0 deletions drivers/misc/modem_v1/Kconfig
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,10 @@ config LINK_DEVICE_LLI
select LINK_DEVICE_WITH_SBD_ARCH
default n

config LLI_DEBUG_FS
bool "LLI register debugfs logging feature"
default n

config LINK_DEVICE_SHMEM
bool "Real system-level shared-memory on a system bus"
depends on SEC_MODEM_V1
Expand Down
9 changes: 5 additions & 4 deletions drivers/usb/core/devio.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -1105,10 +1105,11 @@ static int proc_getdriver(struct dev_state *ps, void __user *arg)

static int proc_connectinfo(struct dev_state *ps, void __user *arg)
{
struct usbdevfs_connectinfo ci = {
.devnum = ps->dev->devnum,
.slow = ps->dev->speed == USB_SPEED_LOW
};
struct usbdevfs_connectinfo ci;

memset(&ci, 0, sizeof(ci));
ci.devnum = ps->dev->devnum;
ci.slow = ps->dev->speed == USB_SPEED_LOW;

if (copy_to_user(arg, &ci, sizeof(ci)))
return -EFAULT;
Expand Down
24 changes: 20 additions & 4 deletions drivers/usb/core/hub.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -1022,6 +1022,7 @@ enum hub_activation_type {

static void hub_init_func2(struct work_struct *ws);
static void hub_init_func3(struct work_struct *ws);
static void hub_release(struct kref *kref);

static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
{
Expand All @@ -1034,11 +1035,20 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
unsigned delay;

/* Continue a partial initialization */
if (type == HUB_INIT2)
goto init2;
if (type == HUB_INIT3)
goto init3;
if (type == HUB_INIT2 || type == HUB_INIT3) {
device_lock(hub->intfdev);

/* Was the hub disconnected while we were waiting? */
if (hub->disconnected) {
device_unlock(hub->intfdev);
kref_put(&hub->kref, hub_release);
return;
}
if (type == HUB_INIT2)
goto init2;
goto init3;
}
kref_get(&hub->kref);
/* The superspeed hub except for root hub has to use Hub Depth
* value as an offset into the route string to locate the bits
* it uses to determine the downstream port number. So hub driver
Expand Down Expand Up @@ -1238,6 +1248,7 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func3);
schedule_delayed_work(&hub->init_work,
msecs_to_jiffies(delay));
device_unlock(hub->intfdev);
return; /* Continues at init3: below */
} else {
msleep(delay);
Expand All @@ -1258,6 +1269,11 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
/* Allow autosuspend if it was suppressed */
if (type <= HUB_INIT3)
usb_autopm_put_interface_async(to_usb_interface(hub->intfdev));

if (type == HUB_INIT2 || type == HUB_INIT3)
device_unlock(hub->intfdev);

kref_put(&hub->kref, hub_release);
}

/* Implement the continuations for the delays above */
Expand Down
6 changes: 6 additions & 0 deletions drivers/video/exynos/decon/decon_core.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -4092,6 +4092,11 @@ static ssize_t decon_fb_read(struct fb_info *info, char __user *buf,
return 0;
}

static ssize_t decon_fb_write(struct fb_info *info, const char __user *buf,
size_t count, loff_t *ppos)
{
return 0;
}

static int decon_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
Expand Down Expand Up @@ -4272,6 +4277,7 @@ static struct fb_ops decon_fb_ops = {
.fb_imageblit = cfb_imageblit,
.fb_ioctl = decon_ioctl,
.fb_read = decon_fb_read,
.fb_write = decon_fb_write,
.fb_pan_display = decon_pan_display,
.fb_mmap = decon_mmap,
.fb_release = decon_release,
Expand Down
7 changes: 7 additions & 0 deletions fs/ecryptfs/ecryptfs_dek.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,9 @@ int parse_dek_packet(char *data,
char temp_comm[PKG_NAME_SIZE]; //test
int temp_euid;

if (crypt_stat->file_version == 0)
return -EPERM;

(*packet_size) = 0;

if (data[(*packet_size)++] != ECRYPTFS_DEK_PACKET_TYPE) {
Expand Down Expand Up @@ -233,8 +236,12 @@ int parse_dek_packet(char *data,

crypt_stat->sdp_dek.type = get_unaligned_be32(data + *packet_size);
(*packet_size) += 4;
if(crypt_stat->sdp_dek.type < 0 || crypt_stat->sdp_dek.type > 6)
return -EINVAL;
crypt_stat->sdp_dek.len = get_unaligned_be32(data + *packet_size);
(*packet_size) += 4;
if(crypt_stat->sdp_dek.len <= 0 || crypt_stat->sdp_dek.len > DEK_MAXLEN)
return -EFAULT;
memcpy(crypt_stat->sdp_dek.buf, &data[*packet_size], crypt_stat->sdp_dek.len);
(*packet_size) += crypt_stat->sdp_dek.len;
}
Expand Down
2 changes: 1 addition & 1 deletion fs/ecryptfs/keystore.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -1911,7 +1911,7 @@ int ecryptfs_parse_packet_set(struct ecryptfs_crypt_stat *crypt_stat,
&packet_size);
if (rc) {
ecryptfs_printk(KERN_ERR, "Error parsing "
"dek packet\n");
"dek packet %d\n", rc);
rc = -EIO;
goto out_wipe_list;
}
Expand Down
2 changes: 1 addition & 1 deletion include/linux/mipi-lli.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ struct mipi_lli {
struct work_struct wq_sys_init;
struct workqueue_struct *wq;

#ifdef CONFIG_DEBUG_FS
#ifdef CONFIG_LLI_DEBUG_FS
struct dentry *debugfs_dir;
struct dentry *debugfs_dump;
#endif
Expand Down
15 changes: 0 additions & 15 deletions include/uapi/linux/netfilter/xt_RATEEST.h

This file was deleted.

31 changes: 0 additions & 31 deletions include/uapi/linux/netfilter/xt_connmark.h

This file was deleted.

Loading

0 comments on commit 23aff23

Please sign in to comment.