aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/HOWTO2
-rw-r--r--MAINTAINERS4
-rw-r--r--Makefile2
-rw-r--r--block/bsg.c3
-rw-r--r--drivers/char/pcmcia/ipwireless/hardware.c4
-rw-r--r--drivers/isdn/i4l/isdn_common.c4
-rw-r--r--drivers/media/video/ov7670.c4
-rw-r--r--drivers/message/fusion/mptbase.c11
-rw-r--r--drivers/message/fusion/mptspi.c9
-rw-r--r--drivers/rtc/rtc-fm3130.c2
-rw-r--r--drivers/rtc/rtc-pcf8563.c1
-rw-r--r--drivers/scsi/ipr.c6
-rw-r--r--drivers/scsi/scsi_lib.c9
-rw-r--r--drivers/serial/8250.c3
-rw-r--r--drivers/video/fb_defio.c20
-rw-r--r--fs/cifs/cifsacl.c10
-rw-r--r--fs/cifs/inode.c20
-rw-r--r--include/asm-frv/system.h2
-rw-r--r--include/asm-x86/desc.h4
-rw-r--r--kernel/cpuset.c24
-rw-r--r--security/device_cgroup.c6
21 files changed, 107 insertions, 43 deletions
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index 0291ade44c17..619e8caf30db 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -377,7 +377,7 @@ Bug Reporting
377bugzilla.kernel.org is where the Linux kernel developers track kernel 377bugzilla.kernel.org is where the Linux kernel developers track kernel
378bugs. Users are encouraged to report all bugs that they find in this 378bugs. Users are encouraged to report all bugs that they find in this
379tool. For details on how to use the kernel bugzilla, please see: 379tool. For details on how to use the kernel bugzilla, please see:
380 http://test.kernel.org/bugzilla/faq.html 380 http://bugzilla.kernel.org/page.cgi?id=faq.html
381 381
382The file REPORTING-BUGS in the main kernel source directory has a good 382The file REPORTING-BUGS in the main kernel source directory has a good
383template for how to report a possible kernel bug, and details what kind 383template for how to report a possible kernel bug, and details what kind
diff --git a/MAINTAINERS b/MAINTAINERS
index c94d038cea33..1528e58b5408 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3088,8 +3088,8 @@ L: linux-scsi@vger.kernel.org
3088S: Maintained 3088S: Maintained
3089 3089
3090OPROFILE 3090OPROFILE
3091P: Philippe Elie 3091P: Robert Richter
3092M: phil.el@wanadoo.fr 3092M: robert.richter@amd.com
3093L: oprofile-list@lists.sf.net 3093L: oprofile-list@lists.sf.net
3094S: Maintained 3094S: Maintained
3095 3095
diff --git a/Makefile b/Makefile
index 6315424a00b9..e3c5eb66ec52 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 26 3SUBLEVEL = 26
4EXTRAVERSION = -rc9 4EXTRAVERSION =
5NAME = Rotary Wombat 5NAME = Rotary Wombat
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/block/bsg.c b/block/bsg.c
index f0b7cd343216..54d617f7df3e 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -709,11 +709,12 @@ static void bsg_kref_release_function(struct kref *kref)
709{ 709{
710 struct bsg_class_device *bcd = 710 struct bsg_class_device *bcd =
711 container_of(kref, struct bsg_class_device, ref); 711 container_of(kref, struct bsg_class_device, ref);
712 struct device *parent = bcd->parent;
712 713
713 if (bcd->release) 714 if (bcd->release)
714 bcd->release(bcd->parent); 715 bcd->release(bcd->parent);
715 716
716 put_device(bcd->parent); 717 put_device(parent);
717} 718}
718 719
719static int bsg_put_device(struct bsg_device *bd) 720static int bsg_put_device(struct bsg_device *bd)
diff --git a/drivers/char/pcmcia/ipwireless/hardware.c b/drivers/char/pcmcia/ipwireless/hardware.c
index ba6340ae98af..929101ecbae2 100644
--- a/drivers/char/pcmcia/ipwireless/hardware.c
+++ b/drivers/char/pcmcia/ipwireless/hardware.c
@@ -590,8 +590,10 @@ static struct ipw_rx_packet *pool_allocate(struct ipw_hardware *hw,
590 packet = kmalloc(sizeof(struct ipw_rx_packet) + 590 packet = kmalloc(sizeof(struct ipw_rx_packet) +
591 old_packet->length + minimum_free_space, 591 old_packet->length + minimum_free_space,
592 GFP_ATOMIC); 592 GFP_ATOMIC);
593 if (!packet) 593 if (!packet) {
594 kfree(old_packet);
594 return NULL; 595 return NULL;
596 }
595 memcpy(packet, old_packet, 597 memcpy(packet, old_packet,
596 sizeof(struct ipw_rx_packet) 598 sizeof(struct ipw_rx_packet)
597 + old_packet->length); 599 + old_packet->length);
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index 0f3c66de69bc..8d8c6b736167 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -1977,8 +1977,10 @@ isdn_writebuf_stub(int drvidx, int chan, const u_char __user * buf, int len)
1977 if (!skb) 1977 if (!skb)
1978 return -ENOMEM; 1978 return -ENOMEM;
1979 skb_reserve(skb, hl); 1979 skb_reserve(skb, hl);
1980 if (copy_from_user(skb_put(skb, len), buf, len)) 1980 if (copy_from_user(skb_put(skb, len), buf, len)) {
1981 dev_kfree_skb(skb);
1981 return -EFAULT; 1982 return -EFAULT;
1983 }
1982 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb); 1984 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb);
1983 if (ret <= 0) 1985 if (ret <= 0)
1984 dev_kfree_skb(skb); 1986 dev_kfree_skb(skb);
diff --git a/drivers/media/video/ov7670.c b/drivers/media/video/ov7670.c
index 2bc6bdc9c1f2..d7bfd30f74a9 100644
--- a/drivers/media/video/ov7670.c
+++ b/drivers/media/video/ov7670.c
@@ -406,8 +406,10 @@ static int ov7670_read(struct i2c_client *c, unsigned char reg,
406 int ret; 406 int ret;
407 407
408 ret = i2c_smbus_read_byte_data(c, reg); 408 ret = i2c_smbus_read_byte_data(c, reg);
409 if (ret >= 0) 409 if (ret >= 0) {
410 *value = (unsigned char) ret; 410 *value = (unsigned char) ret;
411 ret = 0;
412 }
411 return ret; 413 return ret;
412} 414}
413 415
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index db3c892f87fb..d40d6d15ae20 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -1686,9 +1686,14 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1686 ioc->bus_type = SAS; 1686 ioc->bus_type = SAS;
1687 } 1687 }
1688 1688
1689 if (ioc->bus_type == SAS && mpt_msi_enable == -1) 1689 if (mpt_msi_enable == -1) {
1690 ioc->msi_enable = 1; 1690 /* Enable on SAS, disable on FC and SPI */
1691 else 1691 if (ioc->bus_type == SAS)
1692 ioc->msi_enable = 1;
1693 else
1694 ioc->msi_enable = 0;
1695 } else
1696 /* follow flag: 0 - disable; 1 - enable */
1692 ioc->msi_enable = mpt_msi_enable; 1697 ioc->msi_enable = mpt_msi_enable;
1693 1698
1694 if (ioc->errata_flag_1064) 1699 if (ioc->errata_flag_1064)
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 25bcfcf36f2e..1effca4e40e1 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -1266,13 +1266,18 @@ mptspi_dv_renegotiate(struct _MPT_SCSI_HOST *hd)
1266static int 1266static int
1267mptspi_ioc_reset(MPT_ADAPTER *ioc, int reset_phase) 1267mptspi_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
1268{ 1268{
1269 struct _MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
1270 int rc; 1269 int rc;
1271 1270
1272 rc = mptscsih_ioc_reset(ioc, reset_phase); 1271 rc = mptscsih_ioc_reset(ioc, reset_phase);
1273 1272
1274 if (reset_phase == MPT_IOC_POST_RESET) 1273 /* only try to do a renegotiation if we're properly set up
1274 * if we get an ioc fault on bringup, ioc->sh will be NULL */
1275 if (reset_phase == MPT_IOC_POST_RESET &&
1276 ioc->sh) {
1277 struct _MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
1278
1275 mptspi_dv_renegotiate(hd); 1279 mptspi_dv_renegotiate(hd);
1280 }
1276 1281
1277 return rc; 1282 return rc;
1278} 1283}
diff --git a/drivers/rtc/rtc-fm3130.c b/drivers/rtc/rtc-fm3130.c
index 11644c8fca82..abfdfcbaa059 100644
--- a/drivers/rtc/rtc-fm3130.c
+++ b/drivers/rtc/rtc-fm3130.c
@@ -55,7 +55,7 @@ struct fm3130 {
55 int alarm; 55 int alarm;
56}; 56};
57static const struct i2c_device_id fm3130_id[] = { 57static const struct i2c_device_id fm3130_id[] = {
58 { "fm3130-rtc", 0 }, 58 { "fm3130", 0 },
59 { } 59 { }
60}; 60};
61MODULE_DEVICE_TABLE(i2c, fm3130_id); 61MODULE_DEVICE_TABLE(i2c, fm3130_id);
diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index 0fc4c3630780..748a502a6355 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -302,6 +302,7 @@ static int pcf8563_remove(struct i2c_client *client)
302 302
303static const struct i2c_device_id pcf8563_id[] = { 303static const struct i2c_device_id pcf8563_id[] = {
304 { "pcf8563", 0 }, 304 { "pcf8563", 0 },
305 { "rtc8564", 0 },
305 { } 306 { }
306}; 307};
307MODULE_DEVICE_TABLE(i2c, pcf8563_id); 308MODULE_DEVICE_TABLE(i2c, pcf8563_id);
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 999e91ea7451..e7a3a6554425 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -71,6 +71,7 @@
71#include <linux/module.h> 71#include <linux/module.h>
72#include <linux/moduleparam.h> 72#include <linux/moduleparam.h>
73#include <linux/libata.h> 73#include <linux/libata.h>
74#include <linux/hdreg.h>
74#include <asm/io.h> 75#include <asm/io.h>
75#include <asm/irq.h> 76#include <asm/irq.h>
76#include <asm/processor.h> 77#include <asm/processor.h>
@@ -4913,8 +4914,11 @@ static int ipr_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
4913 struct ipr_resource_entry *res; 4914 struct ipr_resource_entry *res;
4914 4915
4915 res = (struct ipr_resource_entry *)sdev->hostdata; 4916 res = (struct ipr_resource_entry *)sdev->hostdata;
4916 if (res && ipr_is_gata(res)) 4917 if (res && ipr_is_gata(res)) {
4918 if (cmd == HDIO_GET_IDENTITY)
4919 return -ENOTTY;
4917 return ata_scsi_ioctl(sdev, cmd, arg); 4920 return ata_scsi_ioctl(sdev, cmd, arg);
4921 }
4918 4922
4919 return -EINVAL; 4923 return -EINVAL;
4920} 4924}
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index a82d2fe80fb5..cbf55d59a54c 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -207,6 +207,15 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
207 */ 207 */
208 blk_execute_rq(req->q, NULL, req, 1); 208 blk_execute_rq(req->q, NULL, req, 1);
209 209
210 /*
211 * Some devices (USB mass-storage in particular) may transfer
212 * garbage data together with a residue indicating that the data
213 * is invalid. Prevent the garbage from being misinterpreted
214 * and prevent security leaks by zeroing out the excess data.
215 */
216 if (unlikely(req->data_len > 0 && req->data_len <= bufflen))
217 memset(buffer + (bufflen - req->data_len), 0, req->data_len);
218
210 ret = req->errors; 219 ret = req->errors;
211 out: 220 out:
212 blk_put_request(req); 221 blk_put_request(req);
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 1bc00b721e9d..be95e55b228b 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2623,6 +2623,9 @@ static struct console serial8250_console = {
2623 2623
2624static int __init serial8250_console_init(void) 2624static int __init serial8250_console_init(void)
2625{ 2625{
2626 if (nr_uarts > UART_NR)
2627 nr_uarts = UART_NR;
2628
2626 serial8250_isa_init_ports(); 2629 serial8250_isa_init_ports();
2627 register_console(&serial8250_console); 2630 register_console(&serial8250_console);
2628 return 0; 2631 return 0;
diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c
index 24843fdd5395..59df132cc375 100644
--- a/drivers/video/fb_defio.c
+++ b/drivers/video/fb_defio.c
@@ -74,6 +74,7 @@ static int fb_deferred_io_mkwrite(struct vm_area_struct *vma,
74{ 74{
75 struct fb_info *info = vma->vm_private_data; 75 struct fb_info *info = vma->vm_private_data;
76 struct fb_deferred_io *fbdefio = info->fbdefio; 76 struct fb_deferred_io *fbdefio = info->fbdefio;
77 struct page *cur;
77 78
78 /* this is a callback we get when userspace first tries to 79 /* this is a callback we get when userspace first tries to
79 write to the page. we schedule a workqueue. that workqueue 80 write to the page. we schedule a workqueue. that workqueue
@@ -83,7 +84,24 @@ static int fb_deferred_io_mkwrite(struct vm_area_struct *vma,
83 84
84 /* protect against the workqueue changing the page list */ 85 /* protect against the workqueue changing the page list */
85 mutex_lock(&fbdefio->lock); 86 mutex_lock(&fbdefio->lock);
86 list_add(&page->lru, &fbdefio->pagelist); 87
88 /* we loop through the pagelist before adding in order
89 to keep the pagelist sorted */
90 list_for_each_entry(cur, &fbdefio->pagelist, lru) {
91 /* this check is to catch the case where a new
92 process could start writing to the same page
93 through a new pte. this new access can cause the
94 mkwrite even when the original ps's pte is marked
95 writable */
96 if (unlikely(cur == page))
97 goto page_already_added;
98 else if (cur->index > page->index)
99 break;
100 }
101
102 list_add_tail(&page->lru, &cur->lru);
103
104page_already_added:
87 mutex_unlock(&fbdefio->lock); 105 mutex_unlock(&fbdefio->lock);
88 106
89 /* come back after delay to process the deferred IO */ 107 /* come back after delay to process the deferred IO */
diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
index 34902cff5400..0e9fc2ba90ee 100644
--- a/fs/cifs/cifsacl.c
+++ b/fs/cifs/cifsacl.c
@@ -34,11 +34,11 @@
34static struct cifs_wksid wksidarr[NUM_WK_SIDS] = { 34static struct cifs_wksid wksidarr[NUM_WK_SIDS] = {
35 {{1, 0, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, "null user"}, 35 {{1, 0, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, "null user"},
36 {{1, 1, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0} }, "nobody"}, 36 {{1, 1, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0} }, "nobody"},
37 {{1, 1, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(11), 0, 0, 0, 0} }, "net-users"}, 37 {{1, 1, {0, 0, 0, 0, 0, 5}, {__constant_cpu_to_le32(11), 0, 0, 0, 0} }, "net-users"},
38 {{1, 1, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(18), 0, 0, 0, 0} }, "sys"}, 38 {{1, 1, {0, 0, 0, 0, 0, 5}, {__constant_cpu_to_le32(18), 0, 0, 0, 0} }, "sys"},
39 {{1, 2, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(32), cpu_to_le32(544), 0, 0, 0} }, "root"}, 39 {{1, 2, {0, 0, 0, 0, 0, 5}, {__constant_cpu_to_le32(32), __constant_cpu_to_le32(544), 0, 0, 0} }, "root"},
40 {{1, 2, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(32), cpu_to_le32(545), 0, 0, 0} }, "users"}, 40 {{1, 2, {0, 0, 0, 0, 0, 5}, {__constant_cpu_to_le32(32), __constant_cpu_to_le32(545), 0, 0, 0} }, "users"},
41 {{1, 2, {0, 0, 0, 0, 0, 5}, {cpu_to_le32(32), cpu_to_le32(546), 0, 0, 0} }, "guest"} } 41 {{1, 2, {0, 0, 0, 0, 0, 5}, {__constant_cpu_to_le32(32), __constant_cpu_to_le32(546), 0, 0, 0} }, "guest"} }
42; 42;
43 43
44 44
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 722be543ceec..2e904bd111c8 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -219,15 +219,15 @@ int cifs_get_inode_info_unix(struct inode **pinode,
219 rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &find_data, 219 rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &find_data,
220 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & 220 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
221 CIFS_MOUNT_MAP_SPECIAL_CHR); 221 CIFS_MOUNT_MAP_SPECIAL_CHR);
222 if (rc) { 222 if (rc == -EREMOTE && !is_dfs_referral) {
223 if (rc == -EREMOTE && !is_dfs_referral) { 223 is_dfs_referral = true;
224 is_dfs_referral = true; 224 cFYI(DBG2, ("DFS ref"));
225 cFYI(DBG2, ("DFS ref")); 225 /* for DFS, server does not give us real inode data */
226 /* for DFS, server does not give us real inode data */ 226 fill_fake_finddataunix(&find_data, sb);
227 fill_fake_finddataunix(&find_data, sb); 227 rc = 0;
228 rc = 0; 228 } else if (rc)
229 } 229 goto cgiiu_exit;
230 } 230
231 num_of_bytes = le64_to_cpu(find_data.NumOfBytes); 231 num_of_bytes = le64_to_cpu(find_data.NumOfBytes);
232 end_of_file = le64_to_cpu(find_data.EndOfFile); 232 end_of_file = le64_to_cpu(find_data.EndOfFile);
233 233
@@ -236,7 +236,7 @@ int cifs_get_inode_info_unix(struct inode **pinode,
236 *pinode = new_inode(sb); 236 *pinode = new_inode(sb);
237 if (*pinode == NULL) { 237 if (*pinode == NULL) {
238 rc = -ENOMEM; 238 rc = -ENOMEM;
239 goto cgiiu_exit; 239 goto cgiiu_exit;
240 } 240 }
241 /* Is an i_ino of zero legal? */ 241 /* Is an i_ino of zero legal? */
242 /* note ino incremented to unique num in new_inode */ 242 /* note ino incremented to unique num in new_inode */
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h
index d3a12a9079f7..7742ec000cc4 100644
--- a/include/asm-frv/system.h
+++ b/include/asm-frv/system.h
@@ -87,7 +87,7 @@ do { \
87} while(0) 87} while(0)
88 88
89#define irqs_disabled() \ 89#define irqs_disabled() \
90 ({unsigned long flags; local_save_flags(flags); flags; }) 90 ({unsigned long flags; local_save_flags(flags); !!flags; })
91 91
92#define local_irq_save(flags) \ 92#define local_irq_save(flags) \
93do { \ 93do { \
diff --git a/include/asm-x86/desc.h b/include/asm-x86/desc.h
index 07f9f2b17be8..a44c4dc70590 100644
--- a/include/asm-x86/desc.h
+++ b/include/asm-x86/desc.h
@@ -188,8 +188,8 @@ static inline void native_set_ldt(const void *addr, unsigned int entries)
188 unsigned cpu = smp_processor_id(); 188 unsigned cpu = smp_processor_id();
189 ldt_desc ldt; 189 ldt_desc ldt;
190 190
191 set_tssldt_descriptor(&ldt, (unsigned long)addr, 191 set_tssldt_descriptor(&ldt, (unsigned long)addr, DESC_LDT,
192 DESC_LDT, entries * sizeof(ldt) - 1); 192 entries * LDT_ENTRY_SIZE - 1);
193 write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_LDT, 193 write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_LDT,
194 &ldt, DESC_LDT); 194 &ldt, DESC_LDT);
195 asm volatile("lldt %w0"::"q" (GDT_ENTRY_LDT*8)); 195 asm volatile("lldt %w0"::"q" (GDT_ENTRY_LDT*8));
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 9fceb97e989c..798b3ab054eb 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1882,7 +1882,7 @@ static void scan_for_empty_cpusets(const struct cpuset *root)
1882 * in order to minimize text size. 1882 * in order to minimize text size.
1883 */ 1883 */
1884 1884
1885static void common_cpu_mem_hotplug_unplug(void) 1885static void common_cpu_mem_hotplug_unplug(int rebuild_sd)
1886{ 1886{
1887 cgroup_lock(); 1887 cgroup_lock();
1888 1888
@@ -1894,7 +1894,8 @@ static void common_cpu_mem_hotplug_unplug(void)
1894 * Scheduler destroys domains on hotplug events. 1894 * Scheduler destroys domains on hotplug events.
1895 * Rebuild them based on the current settings. 1895 * Rebuild them based on the current settings.
1896 */ 1896 */
1897 rebuild_sched_domains(); 1897 if (rebuild_sd)
1898 rebuild_sched_domains();
1898 1899
1899 cgroup_unlock(); 1900 cgroup_unlock();
1900} 1901}
@@ -1912,11 +1913,22 @@ static void common_cpu_mem_hotplug_unplug(void)
1912static int cpuset_handle_cpuhp(struct notifier_block *unused_nb, 1913static int cpuset_handle_cpuhp(struct notifier_block *unused_nb,
1913 unsigned long phase, void *unused_cpu) 1914 unsigned long phase, void *unused_cpu)
1914{ 1915{
1915 if (phase == CPU_DYING || phase == CPU_DYING_FROZEN) 1916 switch (phase) {
1917 case CPU_UP_CANCELED:
1918 case CPU_UP_CANCELED_FROZEN:
1919 case CPU_DOWN_FAILED:
1920 case CPU_DOWN_FAILED_FROZEN:
1921 case CPU_ONLINE:
1922 case CPU_ONLINE_FROZEN:
1923 case CPU_DEAD:
1924 case CPU_DEAD_FROZEN:
1925 common_cpu_mem_hotplug_unplug(1);
1926 break;
1927 default:
1916 return NOTIFY_DONE; 1928 return NOTIFY_DONE;
1929 }
1917 1930
1918 common_cpu_mem_hotplug_unplug(); 1931 return NOTIFY_OK;
1919 return 0;
1920} 1932}
1921 1933
1922#ifdef CONFIG_MEMORY_HOTPLUG 1934#ifdef CONFIG_MEMORY_HOTPLUG
@@ -1929,7 +1941,7 @@ static int cpuset_handle_cpuhp(struct notifier_block *unused_nb,
1929 1941
1930void cpuset_track_online_nodes(void) 1942void cpuset_track_online_nodes(void)
1931{ 1943{
1932 common_cpu_mem_hotplug_unplug(); 1944 common_cpu_mem_hotplug_unplug(0);
1933} 1945}
1934#endif 1946#endif
1935 1947
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index fd764a0858d0..ddd92cec78ed 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -222,7 +222,7 @@ static void devcgroup_destroy(struct cgroup_subsys *ss,
222#define DEVCG_DENY 2 222#define DEVCG_DENY 2
223#define DEVCG_LIST 3 223#define DEVCG_LIST 3
224 224
225#define MAJMINLEN 10 225#define MAJMINLEN 13
226#define ACCLEN 4 226#define ACCLEN 4
227 227
228static void set_access(char *acc, short access) 228static void set_access(char *acc, short access)
@@ -254,7 +254,7 @@ static void set_majmin(char *str, unsigned m)
254 if (m == ~0) 254 if (m == ~0)
255 sprintf(str, "*"); 255 sprintf(str, "*");
256 else 256 else
257 snprintf(str, MAJMINLEN, "%d", m); 257 snprintf(str, MAJMINLEN, "%u", m);
258} 258}
259 259
260static int devcgroup_seq_read(struct cgroup *cgroup, struct cftype *cft, 260static int devcgroup_seq_read(struct cgroup *cgroup, struct cftype *cft,
@@ -300,7 +300,7 @@ static int may_access_whitelist(struct dev_cgroup *c,
300 continue; 300 continue;
301 if (whitem->minor != ~0 && whitem->minor != refwh->minor) 301 if (whitem->minor != ~0 && whitem->minor != refwh->minor)
302 continue; 302 continue;
303 if (refwh->access & (~(whitem->access | ACC_MASK))) 303 if (refwh->access & (~whitem->access))
304 continue; 304 continue;
305 return 1; 305 return 1;
306 } 306 }