~ubuntu-branches/ubuntu/maverick/linux-mvl-dove/maverick-proposed

« back to all changes in this revision

Viewing changes to fs/proc/base.c

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati, Paolo Pisati, Ubuntu: 2.6.32-34.74, Ubuntu: 2.6.32-34.73, Ubuntu: 2.6.32-33.72, Ubuntu: 2.6.32-33.71, Ubuntu: 2.6.32-33.70, Ubuntu: 2.6.32-33.69, Ubuntu: 2.6.32-33.68, Ubuntu: 2.6.32-33.67
  • Date: 2011-08-19 17:58:25 UTC
  • mfrom: (35.1.6 lucid-proposed)
  • Revision ID: james.westby@ubuntu.com-20110819175825-yt1jlrnvvhv4pwpk
Tags: 2.6.32-418.35
[ Paolo Pisati ]

* Release Tracking Bug
  - LP: #829657
* Rebased to 2.6.32-34.74

[ Ubuntu: 2.6.32-34.74 ]

* Release Tracking Bug
  - LP: #828375
* proc: fix oops on invalid /proc/<pid>/maps access, CVE-2011-1020
  - LP: #813026
  - CVE-2011-1020

[ Ubuntu: 2.6.32-34.73 ]

* Release Tracking Bug
  - LP: #824148
* SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel
  - LP: #805494
* [Config] Add enic/fnic to udebs
  - LP: #801610
* tty: icount changeover for other main devices, CVE-2010-4076,
  CVE-2010-4077
  - LP: #720189
  - CVE-2010-4077
* fs/partitions/efi.c: corrupted GUID partition tables can cause kernel
  oops
  - LP: #795418
  - CVE-2011-1577
* ftrace: Only update the function code on write to filter files
  - LP: #802383
* kmemleak: Do not return a pointer to an object that kmemleak did not
  get
  - LP: #802383
* CPU hotplug, re-create sysfs directory and symlinks
  - LP: #802383
* Fix memory leak in cpufreq_stat
  - LP: #802383
* powerpc/kexec: Fix memory corruption from unallocated slaves
  - LP: #802383
* powerpc/oprofile: Handle events that raise an exception without
  overflowing
  - LP: #802383
* mtd: mtdconcat: fix NAND OOB write
  - LP: #802383
* x86, 64-bit: Fix copy_[to/from]_user() checks for the userspace address
  limit
  - LP: #802383
* ext3: Fix fs corruption when make_indexed_dir() fails
  - LP: #802383
* jbd: Fix forever sleeping process in do_get_write_access()
  - LP: #802383
* jbd: fix fsync() tid wraparound bug
  - LP: #802383
* ext4: release page cache in ext4_mb_load_buddy error path
  - LP: #802383
* Fix Ultrastor asm snippet
  - LP: #802383
* x86, amd: Do not enable ARAT feature on AMD processors below family
  0x12
  - LP: #802383
* x86, amd: Use _safe() msr access for GartTlbWlk disable code
  - LP: #802383
* rcu: Fix unpaired rcu_irq_enter() from locking selftests
  - LP: #802383
* staging: usbip: fix wrong endian conversion
  - LP: #802383
* Fix for buffer overflow in ldm_frag_add not sufficient
  - LP: #802383
* seqlock: Don't smp_rmb in seqlock reader spin loop
  - LP: #802383
* ALSA: HDA: Use one dmic only for Dell Studio 1558
  - LP: #731706, #802383
* ASoC: Ensure output PGA is enabled for line outputs in wm_hubs
  - LP: #802383
* ASoC: Add some missing volume update bit sets for wm_hubs devices
  - LP: #802383
* mm/page_alloc.c: prevent unending loop in __alloc_pages_slowpath()
  - LP: #802383
* loop: limit 'max_part' module param to DISK_MAX_PARTS
  - LP: #802383
* loop: handle on-demand devices correctly
  - LP: #802383
* USB: CP210x Add 4 Device IDs for AC-Services Devices
  - LP: #802383
* USB: moto_modem: Add USB identifier for the Motorola VE240.
  - LP: #802383
* USB: serial: ftdi_sio: adding support for TavIR STK500
  - LP: #802383
* USB: gamin_gps: Fix for data transfer problems in native mode
  - LP: #802383
* usb/gadget: at91sam9g20 fix end point max packet size
  - LP: #802383
* usb: gadget: rndis: don't test against req->length
  - LP: #802383
* OHCI: fix regression caused by nVidia shutdown workaround
  - LP: #802383
* p54usb: add zoom 4410 usbid
  - LP: #802383
* eCryptfs: Allow 2 scatterlist entries for encrypted filenames
  - LP: #802383
* UBIFS: fix a rare memory leak in ro to rw remounting path
  - LP: #802383
* i8k: Avoid lahf in 64-bit code
  - LP: #802383
* cpuidle: menu: fixed wrapping timers at 4.294 seconds
  - LP: #802383
* dm table: reject devices without request fns
  - LP: #802383
* atm: expose ATM device index in sysfs
  - LP: #802383
* brd: limit 'max_part' module param to DISK_MAX_PARTS
  - LP: #802383
* brd: handle on-demand devices correctly
  - LP: #802383
* SUNRPC: Deal with the lack of a SYN_SENT sk->sk_state_change
  callback...
  - LP: #802383
* PCI: Add quirk for setting valid class for TI816X Endpoint
  - LP: #802383
* xen mmu: fix a race window causing leave_mm BUG()
  - LP: #802383
* netfilter: nf_conntrack_reasm: properly handle packets fragmented into
  a single fragment
  - LP: #802383
* fix memory leak in scsi_report_lun_scan
  - LP: #802383
* fix refcounting bug in scsi_get_host_dev
  - LP: #802383
* fix duplicate removal on error path in scsi_sysfs_add_sdev
  - LP: #802383
* UBIFS: fix shrinker object count reports
  - LP: #802383
* UBIFS: fix memory leak on error path
  - LP: #802383
* nbd: limit module parameters to a sane value
  - LP: #802383
* mm: fix ENOSPC returned by handle_mm_fault()
  - LP: #802383
* PCI: Set PCIE maxpayload for card during hotplug insertion
  - LP: #802383
* nl80211: fix check for valid SSID size in scan operations
  - LP: #802383
* lockdep: Fix lock_is_held() on recursion
  - LP: #802383
* drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007
  - LP: #802383
* drm/radeon/kms: fix for radeon on systems >4GB without hardware iommu
  - LP: #802383
* fat: Fix corrupt inode flags when remove ATTR_SYS flag
  - LP: #802383
* xen: off by one errors in multicalls.c
  - LP: #802383
* x86/amd-iommu: Fix 3 possible endless loops
  - LP: #802383
* USB: cdc-acm: Adding second ACM channel support for Nokia E7 and C7
  - LP: #802383
* USB: core: Tolerate protocol stall during hub and port status read
  - LP: #802383
* USB: serial: add another 4N-GALAXY.DE PID to ftdi_sio driver
  - LP: #802383
* ALSA: hda: Fix quirk for Dell Inspiron 910
  - LP: #792712, #802383
* oprofile, dcookies: Fix possible circular locking dependency
  - LP: #802383
* CPUFREQ: Remove cpufreq_stats sysfs entries on module unload.
  - LP: #802383
* md: check ->hot_remove_disk when removing disk
  - LP: #802383
* md/raid5: fix raid5_set_bi_hw_segments
  - LP: #802383
* md/raid5: fix FUA request handling in ops_run_io()
  - LP: #802383
* ata: use pci_dev->revision
  - LP: #802383
* pata_cmd64x: fix PIO setup
  - LP: #802383
* pata_cmd64x: cmd648_bmdma_stop() fix
  - LP: #802383
* pata_cmd64x: remove unused definitions
  - LP: #802383
* pata_cm64x: fix boot crash on parisc
  - LP: #802383
* ACPI: use _HID when supplied by root-level devices
  - LP: #802383
* xfs: properly account for reclaimed inodes
  - LP: #802383
* exec: delay address limit change until point of no return
  - LP: #802383
* netfilter: IPv6: initialize TOS field in REJECT target module
  - LP: #802383
* netfilter: IPv6: fix DSCP mangle code
  - LP: #802383
* genirq: Add IRQF_FORCE_RESUME
  - LP: #802383
* xen: Use IRQF_FORCE_RESUME
  - LP: #802383
* time: Compensate for rounding on odd-frequency clocksources
  - LP: #802383
* Linux 2.6.32.42
  - LP: #802383
* taskstats: don't allow duplicate entries in listener mode,
  CVE-2011-2484
  - LP: #806390
  - CVE-2011-2484
* drm_mm: extract check_free_mm_node
  - LP: #599017, #807508
* drm: implement helper functions for scanning lru list
  - LP: #599017, #807508
* drm/i915: prepare for fair lru eviction
  - LP: #599017, #807508
* drm/i915: Move the eviction logic to its own file.
  - LP: #599017, #807508
* drm/i915: Implement fair lru eviction across both rings. (v2)
  - LP: #599017, #807508
* drm/i915: Maintain LRU order of inactive objects upon access by CPU
  (v2)
  - LP: #599017, #807508
* drm/i915/evict: Ensure we completely cleanup on failure
  - LP: #599017, #807508
* drm/i915: Periodically flush the active lists and requests
  - LP: #599017, #807508
* Linux 2.6.32.42+drm33.19
  - LP: #807508
* net: add limit for socket backlog CVE-2010-4251
  - LP: #807462
* tcp: use limited socket backlog CVE-2010-4251
  - LP: #807462
* ipv6: udp: Optimise multicast reception
  - LP: #807462
* ipv4: udp: Optimise multicast reception
  - LP: #807462
* udp: multicast RX should increment SNMP/sk_drops counter in allocation
  failures CVE-2010-4251
  - LP: #807462
* udp: use limited socket backlog CVE-2010-4251
  - LP: #807462
* llc: use limited socket backlog CVE-2010-4251
  - LP: #807462
* sctp: use limited socket backlog CVE-2010-4251
  - LP: #807462
* tipc: use limited socket backlog CVE-2010-4251
  - LP: #807462
* x25: use limited socket backlog CVE-2010-4251
  - LP: #807462
* net: backlog functions rename CVE-2010-4251
  - LP: #807462
* net: sk_add_backlog() take rmem_alloc into account CVE-2010-4805
  - LP: #809318
* ksm: fix NULL pointer dereference in scan_get_next_rmap_item()
  - LP: #810425
* migrate: don't account swapcache as shmem
  - LP: #810425
* clocksource: Make watchdog robust vs. interruption
  - LP: #810425
* TTY: ldisc, do not close until there are readers
  - LP: #810425
* xhci: Reject double add of active endpoints.
  - LP: #810425
* PM: Free memory bitmaps if opening /dev/snapshot fails
  - LP: #810425
* ath5k: fix memory leak when fewer than N_PD_CURVES are in use
  - LP: #810425
* mm: fix negative commitlimit when gigantic hugepages are allocated
  - LP: #810425
* uvcvideo: Remove buffers from the queues when freeing
  - LP: #810425
* watchdog: mtx1-wdt: request gpio before using it
  - LP: #810425
* debugobjects: Fix boot crash when kmemleak and debugobjects enabled
  - LP: #810425
* cfq-iosched: fix locking around ioc->ioc_data assignment
  - LP: #810425
* cfq-iosched: fix a rcu warning
  - LP: #810425
* i2c-taos-evm: Fix log messages
  - LP: #810425
* md: avoid endless recovery loop when waiting for fail device to
  complete.
  - LP: #810425
* SUNRPC: Ensure the RPC client only quits on fatal signals
  - LP: #810425
* 6pack,mkiss: fix lock inconsistency
  - LP: #810425
* USB: don't let errors prevent system sleep
  - LP: #810425
* USB: don't let the hub driver prevent system sleep
  - LP: #810425
* uml: fix CONFIG_STATIC_LINK=y build failure with newer glibc
  - LP: #810425
* um: os-linux/mem.c needs sys/stat.h
  - LP: #810425
* inet_diag: fix inet_diag_bc_audit()
  - LP: #810425
* PM / Hibernate: Avoid hitting OOM during preallocation of memory
  - LP: #810425
* PM / Hibernate: Fix free_unnecessary_pages()
  - LP: #810425
* bug.h: Add WARN_RATELIMIT
  - LP: #810425
* net: filter: Use WARN_RATELIMIT
  - LP: #810425
* af_packet: prevent information leak
  - LP: #810425
* net/ipv4: Check for mistakenly passed in non-IPv4 address
  - LP: #810425
* ipv6/udp: Use the correct variable to determine non-blocking condition
  - LP: #810425
* udp/recvmsg: Clear MSG_TRUNC flag when starting over for a new packet
  - LP: #810425
* mm: prevent concurrent unmap_mapping_range() on the same inode
  - LP: #810425
* xen: set max_pfn_mapped to the last pfn mapped
  - LP: #810425
* xen: partially revert "xen: set max_pfn_mapped to the last pfn mapped"
  - LP: #810425
* Linux 2.6.32.43
  - LP: #810425
* eCryptfs: Handle failed metadata read in lookup
  - LP: #509180
* pagemap: close races with suid execve, CVE-2011-1020
  - LP: #813026
  - CVE-2011-1020
* report errors in /proc/*/*map* sanely, CVE-2011-1020
  - LP: #813026
  - CVE-2011-1020
* close race in /proc/*/environ, CVE-2011-1020
  - LP: #813026
  - CVE-2011-1020
* auxv: require the target to be tracable (or yourself), CVE-2011-1020
  - LP: #813026
  - CVE-2011-1020
* deal with races in /proc/*/{syscall, stack, personality}, CVE-2011-1020
  - LP: #813026
  - CVE-2011-1020
* rose_loopback_timer sets VC number <= ROSE_DEFAULT_MAXVC, CVE-2011-1493
  - LP: #816550
  - CVE-2011-1493
* rose: Add length checks to CALL_REQUEST parsing, CVE-2011-1493
  - LP: #816550
  - CVE-2011-1493
* Bluetooth: l2cap and rfcomm: fix 1 byte infoleak to userspace.
  - LP: #819569
  - CVE-2011-2492
* drm/nv50-nvc0: work around an evo channel hang that some people see
  - LP: #583760
* ASoC: Fix Blackfin I2S _pointer() implementation return in bounds
  values
  - LP: #823296
* v4l2-ioctl.c: prefill tuner type for g_frequency and g/s_tuner
  - LP: #823296
* pvrusb2: fix g/s_tuner support
  - LP: #823296
* bttv: fix s_tuner for radio
  - LP: #823296
* gro: Only reset frag0 when skb can be pulled
  - LP: #823296
* NFSv4.1: update nfs4_fattr_bitmap_maxsz
  - LP: #823296
* SUNRPC: Fix a race between work-queue and rpc_killall_tasks
  - LP: #823296
* SUNRPC: Fix use of static variable in rpcb_getport_async
  - LP: #823296
* si4713-i2c: avoid potential buffer overflow on si4713
  - LP: #823296
* hwmon: (max1111) Fix race condition causing NULL pointer exception
  - LP: #823296
* bridge: send proper message_age in config BPDU
  - LP: #823296
* davinci: DM365 EVM: fix video input mux bits
  - LP: #823296
* libata: fix unexpectedly frozen port after ata_eh_reset()
  - LP: #823296
* x86: Make Dell Latitude E5420 use reboot=pci
  - LP: #823296
* USB: pl2303: add AdLink ND-6530 USB IDs
  - LP: #823296
* USB: pl2303.h: checkpatch cleanups
  - LP: #823296
* USB: serial: add IDs for WinChipHead USB->RS232 adapter
  - LP: #823296
* staging: comedi: fix infoleak to userspace
  - LP: #823296
* USB: OHCI: fix another regression for NVIDIA controllers
  - LP: #823296
* usb: musb: restore INDEX register in resume path
  - LP: #823296
* USB: dummy-hcd needs the has_tt flag
  - LP: #823296
* ARM: pxa/cm-x300: fix V3020 RTC functionality
  - LP: #823296
* jme: Fix unmap error (Causing system freeze)
  - LP: #823296
* libsas: remove expander from dev list on error
  - LP: #823296
* mac80211: Restart STA timers only on associated state
  - LP: #823296
* Blacklist Traxdata CDR4120 and IOMEGA Zip drive to avoid lock ups.
  - LP: #823296
* ses: requesting a fault indication
  - LP: #823296
* pmcraid: reject negative request size
  - LP: #823296
* kexec, x86: Fix incorrect jump back address if not preserving context
  - LP: #823296
* powerpc/kdump: Fix timeout in crash_kexec_wait_realmode
  - LP: #823296
* PCI: ARI is a PCIe v2 feature
  - LP: #823296
* cciss: do not attempt to read from a write-only register
  - LP: #823296
* xtensa: prevent arbitrary read in ptrace
  - LP: #823296
* ext3: Fix oops in ext3_try_to_allocate_with_rsv()
  - LP: #823296
* svcrpc: fix list-corrupting race on nfsd shutdown
  - LP: #823296
* EHCI: only power off port if over-current is active
  - LP: #823296
* EHCI: fix direction handling for interrupt data toggles
  - LP: #823296
* powerpc/pseries/hvconsole: Fix dropped console output
  - LP: #823296
* x86: Hpet: Avoid the comparator readback penalty
  - LP: #823296
* x86: HPET: Chose a paranoid safe value for the ETIME check
  - LP: #823296
* cifs: clean up cifs_find_smb_ses (try #2)
  - LP: #823296
* cifs: fix NULL pointer dereference in cifs_find_smb_ses
  - LP: #823296
* cifs: check for NULL session password
  - LP: #823296
* gre: fix netns vs proto registration ordering
  - LP: #823296
* netns xfrm: fixup xfrm6_tunnel error propagation
  - LP: #823296
* tunnels: fix netns vs proto registration ordering
  - LP: #823296
* alpha: fix several security issues
  - LP: #823296
* proc: restrict access to /proc/PID/io
  - LP: #823296
* ALSA: sound/core/pcm_compat.c: adjust array index
  - LP: #823296
* dm mpath: fix potential NULL pointer in feature arg processing
  - LP: #823296
* dm: fix idr leak on module removal
  - LP: #823296
* perf: overflow/perf_count_sw_cpu_clock crashes recent kernels
  - LP: #823296
* atm: [br2684] allow routed mode operation again
  - LP: #823296
* Linux 2.6.32.44
  - LP: #823296

[ Ubuntu: 2.6.32-33.72 ]

* Release Tracking Bug
  - LP: #818196
* Revert "fix oops in scsi_run_queue()"
  - LP: #811745
* Revert "put stricter guards on queue dead checks"
  - LP: #811745

[ Ubuntu: 2.6.32-33.71 ]

* Release Tracking Bug
  - LP: #813507
* splice: direct_splice_actor() should not use pos in sd
  - LP: #588861

[ Ubuntu: 2.6.32-33.70 ]

* Release Tracking Bug
  - LP: #807175
* Revert "x86: Flush TLB if PGD entry is changed in i386 PAE mode"
  - LP: #805209

[ Ubuntu: 2.6.32-33.69 ]

* Release Tracking Bug
  - LP: #802554
* Revert "af_unix: Only allow recv on connected seqpacket sockets."

[ Ubuntu: 2.6.32-33.68 ]

* Release Tracking Bug
  - LP: #798305
* Fix abi directory

[ Ubuntu: 2.6.32-33.67 ]

* Revert "iwlagn: Support new 5000 microcode."

Show diffs side-by-side

added added

removed removed

Lines of Context:
241
241
struct mm_struct *mm_for_maps(struct task_struct *task)
242
242
{
243
243
        struct mm_struct *mm;
 
244
        int err;
244
245
 
245
 
        if (mutex_lock_killable(&task->cred_guard_mutex))
246
 
                return NULL;
 
246
        err =  mutex_lock_killable(&task->cred_guard_mutex);
 
247
        if (err)
 
248
                return ERR_PTR(err);
247
249
 
248
250
        mm = get_task_mm(task);
249
251
        if (mm && mm != current->mm &&
250
252
                        !ptrace_may_access(task, PTRACE_MODE_READ)) {
251
253
                mmput(mm);
252
 
                mm = NULL;
 
254
                mm = ERR_PTR(-EACCES);
253
255
        }
254
256
        mutex_unlock(&task->cred_guard_mutex);
255
257
 
295
297
 
296
298
static int proc_pid_auxv(struct task_struct *task, char *buffer)
297
299
{
298
 
        int res = 0;
299
 
        struct mm_struct *mm = get_task_mm(task);
300
 
        if (mm) {
 
300
        struct mm_struct *mm = mm_for_maps(task);
 
301
        int res = PTR_ERR(mm);
 
302
        if (mm && !IS_ERR(mm)) {
301
303
                unsigned int nwords = 0;
302
304
                do {
303
305
                        nwords += 2;
334
336
}
335
337
#endif /* CONFIG_KALLSYMS */
336
338
 
 
339
static int lock_trace(struct task_struct *task)
 
340
{
 
341
        int err = mutex_lock_killable(&task->cred_guard_mutex);
 
342
        if (err)
 
343
                return err;
 
344
        if (!ptrace_may_access(task, PTRACE_MODE_ATTACH)) {
 
345
                mutex_unlock(&task->cred_guard_mutex);
 
346
                return -EPERM;
 
347
        }
 
348
        return 0;
 
349
}
 
350
 
 
351
static void unlock_trace(struct task_struct *task)
 
352
{
 
353
        mutex_unlock(&task->cred_guard_mutex);
 
354
}
 
355
 
337
356
#ifdef CONFIG_STACKTRACE
338
357
 
339
358
#define MAX_STACK_TRACE_DEPTH   64
343
362
{
344
363
        struct stack_trace trace;
345
364
        unsigned long *entries;
 
365
        int err;
346
366
        int i;
347
367
 
348
368
        entries = kmalloc(MAX_STACK_TRACE_DEPTH * sizeof(*entries), GFP_KERNEL);
353
373
        trace.max_entries       = MAX_STACK_TRACE_DEPTH;
354
374
        trace.entries           = entries;
355
375
        trace.skip              = 0;
356
 
        save_stack_trace_tsk(task, &trace);
357
 
 
358
 
        for (i = 0; i < trace.nr_entries; i++) {
359
 
                seq_printf(m, "[<%p>] %pS\n",
360
 
                           (void *)entries[i], (void *)entries[i]);
 
376
 
 
377
        err = lock_trace(task);
 
378
        if (!err) {
 
379
                save_stack_trace_tsk(task, &trace);
 
380
 
 
381
                for (i = 0; i < trace.nr_entries; i++) {
 
382
                        seq_printf(m, "[<%p>] %pS\n",
 
383
                                   (void *)entries[i], (void *)entries[i]);
 
384
                }
 
385
                unlock_trace(task);
361
386
        }
362
387
        kfree(entries);
363
388
 
364
 
        return 0;
 
389
        return err;
365
390
}
366
391
#endif
367
392
 
533
558
{
534
559
        long nr;
535
560
        unsigned long args[6], sp, pc;
 
561
        int res = lock_trace(task);
 
562
        if (res)
 
563
                return res;
536
564
 
537
565
        if (task_current_syscall(task, &nr, args, 6, &sp, &pc))
538
 
                return sprintf(buffer, "running\n");
539
 
 
540
 
        if (nr < 0)
541
 
                return sprintf(buffer, "%ld 0x%lx 0x%lx\n", nr, sp, pc);
542
 
 
543
 
        return sprintf(buffer,
 
566
                res = sprintf(buffer, "running\n");
 
567
        else if (nr < 0)
 
568
                res = sprintf(buffer, "%ld 0x%lx 0x%lx\n", nr, sp, pc);
 
569
        else
 
570
                res = sprintf(buffer,
544
571
                       "%ld 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n",
545
572
                       nr,
546
573
                       args[0], args[1], args[2], args[3], args[4], args[5],
547
574
                       sp, pc);
 
575
        unlock_trace(task);
 
576
        return res;
548
577
}
549
578
#endif /* CONFIG_HAVE_ARCH_TRACEHOOK */
550
579
 
942
971
        if (!task)
943
972
                goto out_no_task;
944
973
 
945
 
        if (!ptrace_may_access(task, PTRACE_MODE_READ))
946
 
                goto out;
947
 
 
948
974
        ret = -ENOMEM;
949
975
        page = (char *)__get_free_page(GFP_TEMPORARY);
950
976
        if (!page)
951
977
                goto out;
952
978
 
 
979
 
 
980
        mm = mm_for_maps(task);
 
981
        ret = PTR_ERR(mm);
 
982
        if (!mm || IS_ERR(mm))
 
983
                goto out_free;
 
984
 
953
985
        ret = 0;
954
 
 
955
 
        mm = get_task_mm(task);
956
 
        if (!mm)
957
 
                goto out_free;
958
 
 
959
986
        while (count > 0) {
960
987
                int this_len, retval, max_len;
961
988
 
2487
2514
        struct task_io_accounting acct = task->ioac;
2488
2515
        unsigned long flags;
2489
2516
 
 
2517
        if (!ptrace_may_access(task, PTRACE_MODE_READ))
 
2518
                return -EACCES;
 
2519
 
2490
2520
        if (whole && lock_task_sighand(task, &flags)) {
2491
2521
                struct task_struct *t = task;
2492
2522
 
2527
2557
static int proc_pid_personality(struct seq_file *m, struct pid_namespace *ns,
2528
2558
                                struct pid *pid, struct task_struct *task)
2529
2559
{
2530
 
        seq_printf(m, "%08x\n", task->personality);
2531
 
        return 0;
 
2560
        int err = lock_trace(task);
 
2561
        if (!err) {
 
2562
                seq_printf(m, "%08x\n", task->personality);
 
2563
                unlock_trace(task);
 
2564
        }
 
2565
        return err;
2532
2566
}
2533
2567
 
2534
2568
/*
2547
2581
        REG("environ",    S_IRUSR, proc_environ_operations),
2548
2582
        INF("auxv",       S_IRUSR, proc_pid_auxv),
2549
2583
        ONE("status",     S_IRUGO, proc_pid_status),
2550
 
        ONE("personality", S_IRUSR, proc_pid_personality),
 
2584
        ONE("personality", S_IRUGO, proc_pid_personality),
2551
2585
        INF("limits",     S_IRUSR, proc_pid_limits),
2552
2586
#ifdef CONFIG_SCHED_DEBUG
2553
2587
        REG("sched",      S_IRUGO|S_IWUSR, proc_pid_sched_operations),
2554
2588
#endif
2555
2589
#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
2556
 
        INF("syscall",    S_IRUSR, proc_pid_syscall),
 
2590
        INF("syscall",    S_IRUGO, proc_pid_syscall),
2557
2591
#endif
2558
2592
        INF("cmdline",    S_IRUGO, proc_pid_cmdline),
2559
2593
        ONE("stat",       S_IRUGO, proc_tgid_stat),
2572
2606
#ifdef CONFIG_PROC_PAGE_MONITOR
2573
2607
        REG("clear_refs", S_IWUSR, proc_clear_refs_operations),
2574
2608
        REG("smaps",      S_IRUGO, proc_smaps_operations),
2575
 
        REG("pagemap",    S_IRUSR, proc_pagemap_operations),
 
2609
        REG("pagemap",    S_IRUGO, proc_pagemap_operations),
2576
2610
#endif
2577
2611
#ifdef CONFIG_SECURITY
2578
2612
        DIR("attr",       S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
2581
2615
        INF("wchan",      S_IRUGO, proc_pid_wchan),
2582
2616
#endif
2583
2617
#ifdef CONFIG_STACKTRACE
2584
 
        ONE("stack",      S_IRUSR, proc_pid_stack),
 
2618
        ONE("stack",      S_IRUGO, proc_pid_stack),
2585
2619
#endif
2586
2620
#ifdef CONFIG_SCHEDSTATS
2587
2621
        INF("schedstat",  S_IRUGO, proc_pid_schedstat),
2608
2642
        REG("coredump_filter", S_IRUGO|S_IWUSR, proc_coredump_filter_operations),
2609
2643
#endif
2610
2644
#ifdef CONFIG_TASK_IO_ACCOUNTING
2611
 
        INF("io",       S_IRUGO, proc_tgid_io_accounting),
 
2645
        INF("io",       S_IRUSR, proc_tgid_io_accounting),
2612
2646
#endif
2613
2647
};
2614
2648
 
2886
2920
        REG("environ",   S_IRUSR, proc_environ_operations),
2887
2921
        INF("auxv",      S_IRUSR, proc_pid_auxv),
2888
2922
        ONE("status",    S_IRUGO, proc_pid_status),
2889
 
        ONE("personality", S_IRUSR, proc_pid_personality),
 
2923
        ONE("personality", S_IRUGO, proc_pid_personality),
2890
2924
        INF("limits",    S_IRUSR, proc_pid_limits),
2891
2925
#ifdef CONFIG_SCHED_DEBUG
2892
2926
        REG("sched",     S_IRUGO|S_IWUSR, proc_pid_sched_operations),
2893
2927
#endif
2894
2928
#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
2895
 
        INF("syscall",   S_IRUSR, proc_pid_syscall),
 
2929
        INF("syscall",   S_IRUGO, proc_pid_syscall),
2896
2930
#endif
2897
2931
        INF("cmdline",   S_IRUGO, proc_pid_cmdline),
2898
2932
        ONE("stat",      S_IRUGO, proc_tid_stat),
2910
2944
#ifdef CONFIG_PROC_PAGE_MONITOR
2911
2945
        REG("clear_refs", S_IWUSR, proc_clear_refs_operations),
2912
2946
        REG("smaps",     S_IRUGO, proc_smaps_operations),
2913
 
        REG("pagemap",    S_IRUSR, proc_pagemap_operations),
 
2947
        REG("pagemap",    S_IRUGO, proc_pagemap_operations),
2914
2948
#endif
2915
2949
#ifdef CONFIG_SECURITY
2916
2950
        DIR("attr",      S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
2919
2953
        INF("wchan",     S_IRUGO, proc_pid_wchan),
2920
2954
#endif
2921
2955
#ifdef CONFIG_STACKTRACE
2922
 
        ONE("stack",      S_IRUSR, proc_pid_stack),
 
2956
        ONE("stack",      S_IRUGO, proc_pid_stack),
2923
2957
#endif
2924
2958
#ifdef CONFIG_SCHEDSTATS
2925
2959
        INF("schedstat", S_IRUGO, proc_pid_schedstat),
2943
2977
        REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations),
2944
2978
#endif
2945
2979
#ifdef CONFIG_TASK_IO_ACCOUNTING
2946
 
        INF("io",       S_IRUGO, proc_tid_io_accounting),
 
2980
        INF("io",       S_IRUSR, proc_tid_io_accounting),
2947
2981
#endif
2948
2982
};
2949
2983