~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to kernel/kexec.c

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno
  • Date: 2011-06-07 12:14:05 UTC
  • mfrom: (43.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20110607121405-i3h1rd7nrnd2b73h
Tags: 2.6.39-2
[ Ben Hutchings ]
* [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA
  (Closes: #627492)
* cgroups: Disable memory resource controller by default. Allow it
  to be enabled using kernel parameter 'cgroup_enable=memory'.
* rt2800usb: Enable support for more USB devices including
  Linksys WUSB600N (Closes: #596626) (this change was accidentally
  omitted from 2.6.39-1)
* [x86] Remove Celeron from list of processors supporting PAE. Most
  'Celeron M' models do not.
* Update debconf template translations:
  - Swedish (Martin Bagge) (Closes: #628932)
  - French (David Prévot) (Closes: #628191)
* aufs: Update for 2.6.39 (Closes: #627837)
* Add stable 2.6.39.1, including:
  - ext4: dont set PageUptodate in ext4_end_bio()
  - pata_cmd64x: fix boot crash on parisc (Closes: #622997, #622745)
  - ext3: Fix fs corruption when make_indexed_dir() fails
  - netfilter: nf_ct_sip: validate Content-Length in TCP SIP messages
  - sctp: fix race between sctp_bind_addr_free() and
    sctp_bind_addr_conflict()
  - sctp: fix memory leak of the ASCONF queue when free asoc
  - md/bitmap: fix saving of events_cleared and other state
  - cdc_acm: Fix oops when Droids MuIn LCD is connected
  - cx88: Fix conversion from BKL to fine-grained locks (Closes: #619827)
  - keys: Set cred->user_ns in key_replace_session_keyring (CVE-2011-2184)
  - tmpfs: fix race between truncate and writepage
  - nfs41: Correct offset for LAYOUTCOMMIT
  - xen/mmu: fix a race window causing leave_mm BUG()
  - ext4: fix possible use-after-free in ext4_remove_li_request()
  For the complete list of changes, see:
   http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.1
* Bump ABI to 2
* netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC,
  IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT,
  IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET,
  IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules
  (Closes: #629401)

[ Aurelien Jarno ]
* [mipsel/loongson-2f] Disable_SCSI_LPFC to workaround GCC ICE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
#include <linux/vmalloc.h>
34
34
#include <linux/swap.h>
35
35
#include <linux/kmsg_dump.h>
 
36
#include <linux/syscore_ops.h>
36
37
 
37
38
#include <asm/page.h>
38
39
#include <asm/uaccess.h>
144
145
        /* Initialize the list of destination pages */
145
146
        INIT_LIST_HEAD(&image->dest_pages);
146
147
 
147
 
        /* Initialize the list of unuseable pages */
 
148
        /* Initialize the list of unusable pages */
148
149
        INIT_LIST_HEAD(&image->unuseable_pages);
149
150
 
150
151
        /* Read in the segments */
454
455
        /* Deal with the destination pages I have inadvertently allocated.
455
456
         *
456
457
         * Ideally I would convert multi-page allocations into single
457
 
         * page allocations, and add everyting to image->dest_pages.
 
458
         * page allocations, and add everything to image->dest_pages.
458
459
         *
459
460
         * For now it is simpler to just free the pages.
460
461
         */
602
603
        /* Walk through and free any extra destination pages I may have */
603
604
        kimage_free_page_list(&image->dest_pages);
604
605
 
605
 
        /* Walk through and free any unuseable pages I have cached */
 
606
        /* Walk through and free any unusable pages I have cached */
606
607
        kimage_free_page_list(&image->unuseable_pages);
607
608
 
608
609
}
1099
1100
        return size;
1100
1101
}
1101
1102
 
1102
 
static void free_reserved_phys_range(unsigned long begin, unsigned long end)
 
1103
void __weak crash_free_reserved_phys_range(unsigned long begin,
 
1104
                                           unsigned long end)
1103
1105
{
1104
1106
        unsigned long addr;
1105
1107
 
1135
1137
        start = roundup(start, PAGE_SIZE);
1136
1138
        end = roundup(start + new_size, PAGE_SIZE);
1137
1139
 
1138
 
        free_reserved_phys_range(end, crashk_res.end);
 
1140
        crash_free_reserved_phys_range(end, crashk_res.end);
1139
1141
 
1140
1142
        if ((start == end) && (crashk_res.parent != NULL))
1141
1143
                release_resource(&crashk_res);
1531
1533
                local_irq_disable();
1532
1534
                /* Suspend system devices */
1533
1535
                error = sysdev_suspend(PMSG_FREEZE);
 
1536
                if (!error) {
 
1537
                        error = syscore_suspend();
 
1538
                        if (error)
 
1539
                                sysdev_resume();
 
1540
                }
1534
1541
                if (error)
1535
1542
                        goto Enable_irqs;
1536
1543
        } else
1545
1552
 
1546
1553
#ifdef CONFIG_KEXEC_JUMP
1547
1554
        if (kexec_image->preserve_context) {
 
1555
                syscore_resume();
1548
1556
                sysdev_resume();
1549
1557
 Enable_irqs:
1550
1558
                local_irq_enable();