~ubuntu-branches/ubuntu/dapper/linux-source-2.6.15/dapper-updates

« back to all changes in this revision

Viewing changes to kernel/signal.c

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Bader, Stefan Bader, Upstream Kernel Changes
  • Date: 2009-03-16 17:26:53 UTC
  • mfrom: (41.1.8 dapper-security)
  • Revision ID: james.westby@ubuntu.com-20090316172653-tfjmtzutjafofqct
Tags: 2.6.15-54.76
[ Stefan Bader ]

* Fixing up powerpc specific syscalls
  - CVE-2009-0029

[ Upstream Kernel Changes ]

* NFS: Remove the buggy lock-if-signalled case from do_setlk()
  - CVE-2008-4307
* sctp: Avoid memory overflow while FWD-TSN chunk is received with bad
  stream ID
  - CVE-2009-0065
* net: 4 bytes kernel memory disclosure in SO_BSDCOMPAT gsopt try #2
  - CVE-2009-0676
* sparc: Fix mremap address range validation.
  - CVE-2008-6107
* copy_process: fix CLONE_PARENT && parent_exec_id interaction
  - CVE-2009-0028
* dell_rbu: use scnprintf() instead of less secure sprintf()
  - CVE-2009-0322
* drivers/net/skfp: if !capable(CAP_NET_ADMIN): inverted logic
  - CVE-2009-0675
* x86_64: Implement is_compat_task the right way
  - CVE-2009-0834
* x86-64: syscall-audit: fix 32/64 syscall hole
  - CVE-2009-0834
* x86-64: seccomp: fix 32/64 syscall hole
  - CVE-2009-0835
* shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM
  - CVE-2009-0859
* udf: Fix oops when invalid character in
  filename occurs
  - LP: #321606
* Convert all system calls to return a long
  - CVE-2009-0029
* Rename old_readdir to sys_old_readdir
  - CVE-2009-0029
* Remove __attribute__((weak)) from sys_pipe/sys_pipe2
  - CVE-2009-0029
* Make sys_syslog a conditional system call
  - CVE-2009-0029
* System call wrapper infrastructure
  - CVE-2009-0029
* powerpc: Enable syscall wrappers for 64-bit
  - CVE-2009-0029
* s390: enable system call wrappers
  - CVE-2009-0029
* System call wrapper special cases
  - CVE-2009-0029
* Bump ABI
* System call wrappers part 01
  - CVE-2009-0029
* System call wrappers part 02
  - CVE-2009-0029
* System call wrappers part 03
  - CVE-2009-0029
* System call wrappers part 04
  - CVE-2009-0029
* System call wrappers part 05
  - CVE-2009-0029
* System call wrappers part 06
  - CVE-2009-0029
* System call wrappers part 07
  - CVE-2009-0029
* System call wrappers part 08
  - CVE-2009-0029
* System call wrappers part 09
  - CVE-2009-0029
* System call wrappers part 10
  - CVE-2009-0029
* System call wrappers part 11
  - CVE-2009-0029
* System call wrappers part 12
  - CVE-2009-0029
* System call wrappers part 13
  - CVE-2009-0029
* System call wrappers part 14
  - CVE-2009-0029
* System call wrappers part 15
  - CVE-2009-0029
* System call wrappers part 16
  - CVE-2009-0029
* System call wrappers part 17
  - CVE-2009-0029
* System call wrappers part 18
  - CVE-2009-0029
* System call wrappers part 19
  - CVE-2009-0029
* System call wrappers part 20
  - CVE-2009-0029
* System call wrappers part 21
  - CVE-2009-0029
* System call wrappers part 22
  - CVE-2009-0029
* System call wrappers part 23
  - CVE-2009-0029
* System call wrappers part 24
  - CVE-2009-0029
* System call wrappers part 25
  - CVE-2009-0029
* System call wrappers part 26
  - CVE-2009-0029
* System call wrappers part 27
  - CVE-2009-0029
* System call wrappers part 28
  - CVE-2009-0029
* System call wrappers part 29
  - CVE-2009-0029
* System call wrappers part 32
  - CVE-2009-0029
* System call wrappers part 33
  - CVE-2009-0029
* s390 specific system call wrappers
  - CVE-2009-0029
* sparc: Enable syscall wrappers for 64-bit (CVE-2009-0029)
  - CVE-2009-0029
* syscall define: fix uml compile bug
  - CVE-2009-0029
* Fixing up the syscall wrappers to match the Dapper (2.6.15) kernel
  - CVE-2009-0029

Show diffs side-by-side

added added

removed removed

Lines of Context:
1976
1976
 * System call entry points.
1977
1977
 */
1978
1978
 
1979
 
asmlinkage long sys_restart_syscall(void)
 
1979
SYSCALL_DEFINE0(restart_syscall)
1980
1980
{
1981
1981
        struct restart_block *restart = &current_thread_info()->restart_block;
1982
1982
        return restart->fn(restart);
2029
2029
        return error;
2030
2030
}
2031
2031
 
2032
 
asmlinkage long
2033
 
sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize)
 
2032
SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
 
2033
                sigset_t __user *, oset, size_t, sigsetsize)
2034
2034
{
2035
2035
        int error = -EINVAL;
2036
2036
        sigset_t old_set, new_set;
2089
2089
        return error;
2090
2090
}       
2091
2091
 
2092
 
asmlinkage long
2093
 
sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
 
2092
SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
2094
2093
{
2095
2094
        return do_sigpending(set, sigsetsize);
2096
2095
}
2159
2158
 
2160
2159
#endif
2161
2160
 
2162
 
asmlinkage long
2163
 
sys_rt_sigtimedwait(const sigset_t __user *uthese,
2164
 
                    siginfo_t __user *uinfo,
2165
 
                    const struct timespec __user *uts,
2166
 
                    size_t sigsetsize)
 
2161
SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
 
2162
                siginfo_t __user *, uinfo, const struct timespec __user *, uts,
 
2163
                size_t, sigsetsize)
2167
2164
{
2168
2165
        int ret, sig;
2169
2166
        sigset_t these;
2237
2234
        return ret;
2238
2235
}
2239
2236
 
2240
 
asmlinkage long
2241
 
sys_kill(int pid, int sig)
 
2237
SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
2242
2238
{
2243
2239
        struct siginfo info;
2244
2240
 
2294
2290
 *  exists but it's not belonging to the target process anymore. This
2295
2291
 *  method solves the problem of threads exiting and PIDs getting reused.
2296
2292
 */
2297
 
asmlinkage long sys_tgkill(int tgid, int pid, int sig)
 
2293
SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
2298
2294
{
2299
2295
        /* This is only valid for single tasks */
2300
2296
        if (pid <= 0 || tgid <= 0)
2306
2302
/*
2307
2303
 *  Send a signal to only one task, even if it's a CLONE_THREAD task.
2308
2304
 */
2309
 
asmlinkage long
2310
 
sys_tkill(int pid, int sig)
 
2305
SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
2311
2306
{
2312
2307
        /* This is only valid for single tasks */
2313
2308
        if (pid <= 0)
2316
2311
        return do_tkill(0, pid, sig);
2317
2312
}
2318
2313
 
2319
 
asmlinkage long
2320
 
sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo)
 
2314
SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
 
2315
                siginfo_t __user *, uinfo)
2321
2316
{
2322
2317
        siginfo_t info;
2323
2318
 
2469
2464
 
2470
2465
#ifdef __ARCH_WANT_SYS_SIGPENDING
2471
2466
 
2472
 
asmlinkage long
2473
 
sys_sigpending(old_sigset_t __user *set)
 
2467
SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
2474
2468
{
2475
2469
        return do_sigpending(set, sizeof(*set));
2476
2470
}
2481
2475
/* Some platforms have their own version with special arguments others
2482
2476
   support only sys_rt_sigprocmask.  */
2483
2477
 
2484
 
asmlinkage long
2485
 
sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset)
 
2478
SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set,
 
2479
                old_sigset_t __user *, oset)
2486
2480
{
2487
2481
        int error;
2488
2482
        old_sigset_t old_set, new_set;
2532
2526
#endif /* __ARCH_WANT_SYS_SIGPROCMASK */
2533
2527
 
2534
2528
#ifdef __ARCH_WANT_SYS_RT_SIGACTION
2535
 
asmlinkage long
2536
 
sys_rt_sigaction(int sig,
2537
 
                 const struct sigaction __user *act,
2538
 
                 struct sigaction __user *oact,
2539
 
                 size_t sigsetsize)
 
2529
SYSCALL_DEFINE4(rt_sigaction, int, sig,
 
2530
                const struct sigaction __user *, act,
 
2531
                struct sigaction __user *, oact,
 
2532
                size_t, sigsetsize)
2540
2533
{
2541
2534
        struct k_sigaction new_sa, old_sa;
2542
2535
        int ret = -EINVAL;
2566
2559
/*
2567
2560
 * For backwards compatibility.  Functionality superseded by sigprocmask.
2568
2561
 */
2569
 
asmlinkage long
2570
 
sys_sgetmask(void)
 
2562
SYSCALL_DEFINE0(sgetmask)
2571
2563
{
2572
2564
        /* SMP safe */
2573
2565
        return current->blocked.sig[0];
2574
2566
}
2575
2567
 
2576
 
asmlinkage long
2577
 
sys_ssetmask(int newmask)
 
2568
SYSCALL_DEFINE1(ssetmask, int, newmask)
2578
2569
{
2579
2570
        int old;
2580
2571
 
2594
2585
/*
2595
2586
 * For backwards compatibility.  Functionality superseded by sigaction.
2596
2587
 */
2597
 
asmlinkage unsigned long
2598
 
sys_signal(int sig, __sighandler_t handler)
 
2588
SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
2599
2589
{
2600
2590
        struct k_sigaction new_sa, old_sa;
2601
2591
        int ret;
2612
2602
 
2613
2603
#ifdef __ARCH_WANT_SYS_PAUSE
2614
2604
 
2615
 
asmlinkage long
2616
 
sys_pause(void)
 
2605
SYSCALL_DEFINE0(pause)
2617
2606
{
2618
2607
        current->state = TASK_INTERRUPTIBLE;
2619
2608
        schedule();