Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de5f503c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
parents d904ffd6 2fd628fe
Loading
Loading
Loading
Loading
+0 −54
Original line number Diff line number Diff line
@@ -161,60 +161,6 @@ out:
	return error;
}

struct dirent32 {
	unsigned int	d_ino;
	unsigned int	d_off;
	unsigned short	d_reclen;
	char		d_name[NAME_MAX + 1];
};

static void
xlate_dirent(void *dirent64, void *dirent32, long n)
{
	long off;
	struct dirent *dirp;
	struct dirent32 *dirp32;

	off = 0;
	while (off < n) {
		dirp = (struct dirent *)(dirent64 + off);
		dirp32 = (struct dirent32 *)(dirent32 + off);
		off += dirp->d_reclen;
		dirp32->d_ino = dirp->d_ino;
		dirp32->d_off = (unsigned int)dirp->d_off;
		dirp32->d_reclen = dirp->d_reclen;
		strncpy(dirp32->d_name, dirp->d_name, dirp->d_reclen - ((3 * 4) + 2));
	}
	return;
}

asmlinkage long
sys32_getdents(unsigned int fd, void * dirent32, unsigned int count)
{
	long n;
	void *dirent64;

	dirent64 = (void *)((unsigned long)(dirent32 + (sizeof(long) - 1)) & ~(sizeof(long) - 1));
	if ((n = sys_getdents(fd, dirent64, count - (dirent64 - dirent32))) < 0)
		return(n);
	xlate_dirent(dirent64, dirent32, n);
	return(n);
}

asmlinkage int old_readdir(unsigned int fd, void * dirent, unsigned int count);

asmlinkage int
sys32_readdir(unsigned int fd, void * dirent32, unsigned int count)
{
	int n;
	struct dirent dirent64;

	if ((n = old_readdir(fd, &dirent64, count)) < 0)
		return(n);
	xlate_dirent(&dirent64, dirent32, dirent64.d_reclen);
	return(n);
}

asmlinkage int
sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, int options)
{
+1 −1
Original line number Diff line number Diff line
@@ -195,7 +195,7 @@ EXPORT(sysn32_call_table)
	PTR	sys_fdatasync
	PTR	sys_truncate
	PTR	sys_ftruncate			/* 6075 */
	PTR	sys32_getdents
	PTR	compat_sys_getdents
	PTR	sys_getcwd
	PTR	sys_chdir
	PTR	sys_fchdir
+2 −2
Original line number Diff line number Diff line
@@ -293,7 +293,7 @@ sys_call_table:
	PTR	sys_uselib
	PTR	sys_swapon
	PTR	sys_reboot
	PTR	sys32_readdir
	PTR	compat_sys_old_readdir
	PTR	old_mmap			/* 4090 */
	PTR	sys_munmap
	PTR	sys_truncate
@@ -345,7 +345,7 @@ sys_call_table:
	PTR	sys_setfsuid
	PTR	sys_setfsgid
	PTR	sys32_llseek			/* 4140 */
	PTR	sys32_getdents
	PTR	compat_sys_getdents
	PTR	compat_sys_select
	PTR	sys_flock
	PTR	sys_msync
+3 −0
Original line number Diff line number Diff line
@@ -540,6 +540,9 @@ void __init setup_arch(char **cmdline_p)
	sparse_init();
	paging_init();
	resource_init();
#ifdef CONFIG_SMP
	plat_smp_setup();
#endif
}

int __init fpu_disable(char *s)
+1 −1
Original line number Diff line number Diff line
@@ -236,7 +236,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
	init_new_context(current, &init_mm);
	current_thread_info()->cpu = 0;
	smp_tune_scheduling();
	prom_prepare_cpus(max_cpus);
	plat_prepare_cpus(max_cpus);
}

/* preload SMP state for boot cpu */
Loading