diff options
| -rw-r--r-- | Documentation/HOWTO | 2 | ||||
| -rw-r--r-- | MAINTAINERS | 4 | ||||
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | block/bsg.c | 3 | ||||
| -rw-r--r-- | drivers/char/pcmcia/ipwireless/hardware.c | 4 | ||||
| -rw-r--r-- | drivers/isdn/i4l/isdn_common.c | 4 | ||||
| -rw-r--r-- | drivers/media/video/ov7670.c | 4 | ||||
| -rw-r--r-- | drivers/message/fusion/mptbase.c | 11 | ||||
| -rw-r--r-- | drivers/message/fusion/mptspi.c | 9 | ||||
| -rw-r--r-- | drivers/rtc/rtc-fm3130.c | 2 | ||||
| -rw-r--r-- | drivers/rtc/rtc-pcf8563.c | 1 | ||||
| -rw-r--r-- | drivers/scsi/ipr.c | 6 | ||||
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 9 | ||||
| -rw-r--r-- | drivers/serial/8250.c | 3 | ||||
| -rw-r--r-- | drivers/video/fb_defio.c | 20 | ||||
| -rw-r--r-- | fs/cifs/cifsacl.c | 10 | ||||
| -rw-r--r-- | fs/cifs/inode.c | 20 | ||||
| -rw-r--r-- | include/asm-frv/system.h | 2 | ||||
| -rw-r--r-- | include/asm-x86/desc.h | 4 | ||||
| -rw-r--r-- | kernel/cpuset.c | 24 | ||||
| -rw-r--r-- | security/device_cgroup.c | 6 |
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 | |||
| 377 | bugzilla.kernel.org is where the Linux kernel developers track kernel | 377 | bugzilla.kernel.org is where the Linux kernel developers track kernel |
| 378 | bugs. Users are encouraged to report all bugs that they find in this | 378 | bugs. Users are encouraged to report all bugs that they find in this |
| 379 | tool. For details on how to use the kernel bugzilla, please see: | 379 | tool. 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 | ||
| 382 | The file REPORTING-BUGS in the main kernel source directory has a good | 382 | The file REPORTING-BUGS in the main kernel source directory has a good |
| 383 | template for how to report a possible kernel bug, and details what kind | 383 | template 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 | |||
| 3088 | S: Maintained | 3088 | S: Maintained |
| 3089 | 3089 | ||
| 3090 | OPROFILE | 3090 | OPROFILE |
| 3091 | P: Philippe Elie | 3091 | P: Robert Richter |
| 3092 | M: phil.el@wanadoo.fr | 3092 | M: robert.richter@amd.com |
| 3093 | L: oprofile-list@lists.sf.net | 3093 | L: oprofile-list@lists.sf.net |
| 3094 | S: Maintained | 3094 | S: Maintained |
| 3095 | 3095 | ||
| @@ -1,7 +1,7 @@ | |||
| 1 | VERSION = 2 | 1 | VERSION = 2 |
| 2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
| 3 | SUBLEVEL = 26 | 3 | SUBLEVEL = 26 |
| 4 | EXTRAVERSION = -rc9 | 4 | EXTRAVERSION = |
| 5 | NAME = Rotary Wombat | 5 | NAME = 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 | ||
| 719 | static int bsg_put_device(struct bsg_device *bd) | 720 | static 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) | |||
| 1266 | static int | 1266 | static int |
| 1267 | mptspi_ioc_reset(MPT_ADAPTER *ioc, int reset_phase) | 1267 | mptspi_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 | }; |
| 57 | static const struct i2c_device_id fm3130_id[] = { | 57 | static const struct i2c_device_id fm3130_id[] = { |
| 58 | { "fm3130-rtc", 0 }, | 58 | { "fm3130", 0 }, |
| 59 | { } | 59 | { } |
| 60 | }; | 60 | }; |
| 61 | MODULE_DEVICE_TABLE(i2c, fm3130_id); | 61 | MODULE_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 | ||
| 303 | static const struct i2c_device_id pcf8563_id[] = { | 303 | static const struct i2c_device_id pcf8563_id[] = { |
| 304 | { "pcf8563", 0 }, | 304 | { "pcf8563", 0 }, |
| 305 | { "rtc8564", 0 }, | ||
| 305 | { } | 306 | { } |
| 306 | }; | 307 | }; |
| 307 | MODULE_DEVICE_TABLE(i2c, pcf8563_id); | 308 | MODULE_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 | ||
| 2624 | static int __init serial8250_console_init(void) | 2624 | static 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 | |||
| 104 | page_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 @@ | |||
| 34 | static struct cifs_wksid wksidarr[NUM_WK_SIDS] = { | 34 | static 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) \ |
| 93 | do { \ | 93 | do { \ |
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 | ||
| 1885 | static void common_cpu_mem_hotplug_unplug(void) | 1885 | static 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) | |||
| 1912 | static int cpuset_handle_cpuhp(struct notifier_block *unused_nb, | 1913 | static 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 | ||
| 1930 | void cpuset_track_online_nodes(void) | 1942 | void 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 | ||
| 228 | static void set_access(char *acc, short access) | 228 | static 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 | ||
| 260 | static int devcgroup_seq_read(struct cgroup *cgroup, struct cftype *cft, | 260 | static 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 | } |
