diff options
-rw-r--r-- | MAINTAINERS | 11 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_atombios.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/Kconfig | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/b43/pio.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sta_ioctl.c | 7 | ||||
-rw-r--r-- | drivers/rtc/interface.c | 50 | ||||
-rw-r--r-- | fs/cifs/connect.c | 4 | ||||
-rw-r--r-- | fs/minix/inode.c | 34 | ||||
-rw-r--r-- | include/linux/security.h | 2 | ||||
-rw-r--r-- | kernel/exit.c | 9 | ||||
-rw-r--r-- | kernel/hung_task.c | 14 | ||||
-rw-r--r-- | kernel/ptrace.c | 13 | ||||
-rw-r--r-- | kernel/signal.c | 2 | ||||
-rw-r--r-- | net/bluetooth/hci_core.c | 2 | ||||
-rw-r--r-- | net/sched/sch_qfq.c | 4 | ||||
-rw-r--r-- | security/security.c | 2 |
18 files changed, 99 insertions, 86 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index dbf3d94b1ded..0cc83fc1d8b2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1698,11 +1698,9 @@ F: arch/x86/include/asm/tce.h | |||
1698 | 1698 | ||
1699 | CAN NETWORK LAYER | 1699 | CAN NETWORK LAYER |
1700 | M: Oliver Hartkopp <socketcan@hartkopp.net> | 1700 | M: Oliver Hartkopp <socketcan@hartkopp.net> |
1701 | M: Oliver Hartkopp <oliver.hartkopp@volkswagen.de> | ||
1702 | M: Urs Thuermann <urs.thuermann@volkswagen.de> | ||
1703 | L: linux-can@vger.kernel.org | 1701 | L: linux-can@vger.kernel.org |
1704 | L: netdev@vger.kernel.org | 1702 | W: http://gitorious.org/linux-can |
1705 | W: http://developer.berlios.de/projects/socketcan/ | 1703 | T: git git://gitorious.org/linux-can/linux-can-next.git |
1706 | S: Maintained | 1704 | S: Maintained |
1707 | F: net/can/ | 1705 | F: net/can/ |
1708 | F: include/linux/can.h | 1706 | F: include/linux/can.h |
@@ -1713,9 +1711,10 @@ F: include/linux/can/gw.h | |||
1713 | 1711 | ||
1714 | CAN NETWORK DRIVERS | 1712 | CAN NETWORK DRIVERS |
1715 | M: Wolfgang Grandegger <wg@grandegger.com> | 1713 | M: Wolfgang Grandegger <wg@grandegger.com> |
1714 | M: Marc Kleine-Budde <mkl@pengutronix.de> | ||
1716 | L: linux-can@vger.kernel.org | 1715 | L: linux-can@vger.kernel.org |
1717 | L: netdev@vger.kernel.org | 1716 | W: http://gitorious.org/linux-can |
1718 | W: http://developer.berlios.de/projects/socketcan/ | 1717 | T: git git://gitorious.org/linux-can/linux-can-next.git |
1719 | S: Maintained | 1718 | S: Maintained |
1720 | F: drivers/net/can/ | 1719 | F: drivers/net/can/ |
1721 | F: include/linux/can/dev.h | 1720 | F: include/linux/can/dev.h |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 3 | 1 | VERSION = 3 |
2 | PATCHLEVEL = 2 | 2 | PATCHLEVEL = 2 |
3 | SUBLEVEL = 0 | 3 | SUBLEVEL = 0 |
4 | EXTRAVERSION = -rc7 | 4 | EXTRAVERSION = |
5 | NAME = Saber-toothed Squirrel | 5 | NAME = Saber-toothed Squirrel |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index d24baf30efcb..5082d17d14dc 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | |||
@@ -2560,7 +2560,11 @@ void radeon_atombios_get_power_modes(struct radeon_device *rdev) | |||
2560 | 2560 | ||
2561 | rdev->pm.current_power_state_index = rdev->pm.default_power_state_index; | 2561 | rdev->pm.current_power_state_index = rdev->pm.default_power_state_index; |
2562 | rdev->pm.current_clock_mode_index = 0; | 2562 | rdev->pm.current_clock_mode_index = 0; |
2563 | rdev->pm.current_vddc = rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage; | 2563 | if (rdev->pm.default_power_state_index >= 0) |
2564 | rdev->pm.current_vddc = | ||
2565 | rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage; | ||
2566 | else | ||
2567 | rdev->pm.current_vddc = 0; | ||
2564 | } | 2568 | } |
2565 | 2569 | ||
2566 | void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable) | 2570 | void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable) |
diff --git a/drivers/net/ethernet/freescale/Kconfig b/drivers/net/ethernet/freescale/Kconfig index 820de8b9ff08..3574e1499dfc 100644 --- a/drivers/net/ethernet/freescale/Kconfig +++ b/drivers/net/ethernet/freescale/Kconfig | |||
@@ -23,8 +23,8 @@ if NET_VENDOR_FREESCALE | |||
23 | config FEC | 23 | config FEC |
24 | tristate "FEC ethernet controller (of ColdFire and some i.MX CPUs)" | 24 | tristate "FEC ethernet controller (of ColdFire and some i.MX CPUs)" |
25 | depends on (M523x || M527x || M5272 || M528x || M520x || M532x || \ | 25 | depends on (M523x || M527x || M5272 || M528x || M520x || M532x || \ |
26 | ARCH_MXC || ARCH_MXS) | 26 | ARCH_MXC || SOC_IMX28) |
27 | default ARCH_MXC || ARCH_MXS if ARM | 27 | default ARCH_MXC || SOC_IMX28 if ARM |
28 | select PHYLIB | 28 | select PHYLIB |
29 | ---help--- | 29 | ---help--- |
30 | Say Y here if you want to use the built-in 10/100 Fast ethernet | 30 | Say Y here if you want to use the built-in 10/100 Fast ethernet |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 6e3d8384e081..e267c92dbfb8 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -1797,6 +1797,9 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw, | |||
1797 | struct ath_softc *sc = hw->priv; | 1797 | struct ath_softc *sc = hw->priv; |
1798 | struct ath_node *an = (struct ath_node *) sta->drv_priv; | 1798 | struct ath_node *an = (struct ath_node *) sta->drv_priv; |
1799 | 1799 | ||
1800 | if (!(sc->sc_flags & SC_OP_TXAGGR)) | ||
1801 | return; | ||
1802 | |||
1800 | switch (cmd) { | 1803 | switch (cmd) { |
1801 | case STA_NOTIFY_SLEEP: | 1804 | case STA_NOTIFY_SLEEP: |
1802 | an->sleeping = true; | 1805 | an->sleeping = true; |
diff --git a/drivers/net/wireless/b43/pio.c b/drivers/net/wireless/b43/pio.c index d07b412a32c4..3533ab86bd36 100644 --- a/drivers/net/wireless/b43/pio.c +++ b/drivers/net/wireless/b43/pio.c | |||
@@ -617,9 +617,19 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q) | |||
617 | const char *err_msg = NULL; | 617 | const char *err_msg = NULL; |
618 | struct b43_rxhdr_fw4 *rxhdr = | 618 | struct b43_rxhdr_fw4 *rxhdr = |
619 | (struct b43_rxhdr_fw4 *)wl->pio_scratchspace; | 619 | (struct b43_rxhdr_fw4 *)wl->pio_scratchspace; |
620 | size_t rxhdr_size = sizeof(*rxhdr); | ||
620 | 621 | ||
621 | BUILD_BUG_ON(sizeof(wl->pio_scratchspace) < sizeof(*rxhdr)); | 622 | BUILD_BUG_ON(sizeof(wl->pio_scratchspace) < sizeof(*rxhdr)); |
622 | memset(rxhdr, 0, sizeof(*rxhdr)); | 623 | switch (dev->fw.hdr_format) { |
624 | case B43_FW_HDR_410: | ||
625 | case B43_FW_HDR_351: | ||
626 | rxhdr_size -= sizeof(rxhdr->format_598) - | ||
627 | sizeof(rxhdr->format_351); | ||
628 | break; | ||
629 | case B43_FW_HDR_598: | ||
630 | break; | ||
631 | } | ||
632 | memset(rxhdr, 0, rxhdr_size); | ||
623 | 633 | ||
624 | /* Check if we have data and wait for it to get ready. */ | 634 | /* Check if we have data and wait for it to get ready. */ |
625 | if (q->rev >= 8) { | 635 | if (q->rev >= 8) { |
@@ -657,11 +667,11 @@ data_ready: | |||
657 | 667 | ||
658 | /* Get the preamble (RX header) */ | 668 | /* Get the preamble (RX header) */ |
659 | if (q->rev >= 8) { | 669 | if (q->rev >= 8) { |
660 | b43_block_read(dev, rxhdr, sizeof(*rxhdr), | 670 | b43_block_read(dev, rxhdr, rxhdr_size, |
661 | q->mmio_base + B43_PIO8_RXDATA, | 671 | q->mmio_base + B43_PIO8_RXDATA, |
662 | sizeof(u32)); | 672 | sizeof(u32)); |
663 | } else { | 673 | } else { |
664 | b43_block_read(dev, rxhdr, sizeof(*rxhdr), | 674 | b43_block_read(dev, rxhdr, rxhdr_size, |
665 | q->mmio_base + B43_PIO_RXDATA, | 675 | q->mmio_base + B43_PIO_RXDATA, |
666 | sizeof(u16)); | 676 | sizeof(u16)); |
667 | } | 677 | } |
diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c b/drivers/net/wireless/mwifiex/sta_ioctl.c index e40196dfdea0..470ca75ec250 100644 --- a/drivers/net/wireless/mwifiex/sta_ioctl.c +++ b/drivers/net/wireless/mwifiex/sta_ioctl.c | |||
@@ -55,9 +55,14 @@ int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter) | |||
55 | { | 55 | { |
56 | bool cancel_flag = false; | 56 | bool cancel_flag = false; |
57 | int status = adapter->cmd_wait_q.status; | 57 | int status = adapter->cmd_wait_q.status; |
58 | struct cmd_ctrl_node *cmd_queued = adapter->cmd_queued; | 58 | struct cmd_ctrl_node *cmd_queued; |
59 | 59 | ||
60 | if (!adapter->cmd_queued) | ||
61 | return 0; | ||
62 | |||
63 | cmd_queued = adapter->cmd_queued; | ||
60 | adapter->cmd_queued = NULL; | 64 | adapter->cmd_queued = NULL; |
65 | |||
61 | dev_dbg(adapter->dev, "cmd pending\n"); | 66 | dev_dbg(adapter->dev, "cmd pending\n"); |
62 | atomic_inc(&adapter->cmd_pending); | 67 | atomic_inc(&adapter->cmd_pending); |
63 | 68 | ||
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index 3bcc7cfcaba7..8e286259a007 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c | |||
@@ -73,8 +73,6 @@ int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm) | |||
73 | err = -EINVAL; | 73 | err = -EINVAL; |
74 | 74 | ||
75 | mutex_unlock(&rtc->ops_lock); | 75 | mutex_unlock(&rtc->ops_lock); |
76 | /* A timer might have just expired */ | ||
77 | schedule_work(&rtc->irqwork); | ||
78 | return err; | 76 | return err; |
79 | } | 77 | } |
80 | EXPORT_SYMBOL_GPL(rtc_set_time); | 78 | EXPORT_SYMBOL_GPL(rtc_set_time); |
@@ -114,8 +112,6 @@ int rtc_set_mmss(struct rtc_device *rtc, unsigned long secs) | |||
114 | err = -EINVAL; | 112 | err = -EINVAL; |
115 | 113 | ||
116 | mutex_unlock(&rtc->ops_lock); | 114 | mutex_unlock(&rtc->ops_lock); |
117 | /* A timer might have just expired */ | ||
118 | schedule_work(&rtc->irqwork); | ||
119 | 115 | ||
120 | return err; | 116 | return err; |
121 | } | 117 | } |
@@ -323,20 +319,6 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | |||
323 | } | 319 | } |
324 | EXPORT_SYMBOL_GPL(rtc_read_alarm); | 320 | EXPORT_SYMBOL_GPL(rtc_read_alarm); |
325 | 321 | ||
326 | static int ___rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | ||
327 | { | ||
328 | int err; | ||
329 | |||
330 | if (!rtc->ops) | ||
331 | err = -ENODEV; | ||
332 | else if (!rtc->ops->set_alarm) | ||
333 | err = -EINVAL; | ||
334 | else | ||
335 | err = rtc->ops->set_alarm(rtc->dev.parent, alarm); | ||
336 | |||
337 | return err; | ||
338 | } | ||
339 | |||
340 | static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | 322 | static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) |
341 | { | 323 | { |
342 | struct rtc_time tm; | 324 | struct rtc_time tm; |
@@ -360,7 +342,14 @@ static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | |||
360 | * over right here, before we set the alarm. | 342 | * over right here, before we set the alarm. |
361 | */ | 343 | */ |
362 | 344 | ||
363 | return ___rtc_set_alarm(rtc, alarm); | 345 | if (!rtc->ops) |
346 | err = -ENODEV; | ||
347 | else if (!rtc->ops->set_alarm) | ||
348 | err = -EINVAL; | ||
349 | else | ||
350 | err = rtc->ops->set_alarm(rtc->dev.parent, alarm); | ||
351 | |||
352 | return err; | ||
364 | } | 353 | } |
365 | 354 | ||
366 | int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | 355 | int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) |
@@ -407,8 +396,6 @@ int rtc_initialize_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | |||
407 | timerqueue_add(&rtc->timerqueue, &rtc->aie_timer.node); | 396 | timerqueue_add(&rtc->timerqueue, &rtc->aie_timer.node); |
408 | } | 397 | } |
409 | mutex_unlock(&rtc->ops_lock); | 398 | mutex_unlock(&rtc->ops_lock); |
410 | /* maybe that was in the past.*/ | ||
411 | schedule_work(&rtc->irqwork); | ||
412 | return err; | 399 | return err; |
413 | } | 400 | } |
414 | EXPORT_SYMBOL_GPL(rtc_initialize_alarm); | 401 | EXPORT_SYMBOL_GPL(rtc_initialize_alarm); |
@@ -776,20 +763,6 @@ static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer) | |||
776 | return 0; | 763 | return 0; |
777 | } | 764 | } |
778 | 765 | ||
779 | static void rtc_alarm_disable(struct rtc_device *rtc) | ||
780 | { | ||
781 | struct rtc_wkalrm alarm; | ||
782 | struct rtc_time tm; | ||
783 | |||
784 | __rtc_read_time(rtc, &tm); | ||
785 | |||
786 | alarm.time = rtc_ktime_to_tm(ktime_add(rtc_tm_to_ktime(tm), | ||
787 | ktime_set(300, 0))); | ||
788 | alarm.enabled = 0; | ||
789 | |||
790 | ___rtc_set_alarm(rtc, &alarm); | ||
791 | } | ||
792 | |||
793 | /** | 766 | /** |
794 | * rtc_timer_remove - Removes a rtc_timer from the rtc_device timerqueue | 767 | * rtc_timer_remove - Removes a rtc_timer from the rtc_device timerqueue |
795 | * @rtc rtc device | 768 | * @rtc rtc device |
@@ -811,10 +784,8 @@ static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer) | |||
811 | struct rtc_wkalrm alarm; | 784 | struct rtc_wkalrm alarm; |
812 | int err; | 785 | int err; |
813 | next = timerqueue_getnext(&rtc->timerqueue); | 786 | next = timerqueue_getnext(&rtc->timerqueue); |
814 | if (!next) { | 787 | if (!next) |
815 | rtc_alarm_disable(rtc); | ||
816 | return; | 788 | return; |
817 | } | ||
818 | alarm.time = rtc_ktime_to_tm(next->expires); | 789 | alarm.time = rtc_ktime_to_tm(next->expires); |
819 | alarm.enabled = 1; | 790 | alarm.enabled = 1; |
820 | err = __rtc_set_alarm(rtc, &alarm); | 791 | err = __rtc_set_alarm(rtc, &alarm); |
@@ -876,8 +847,7 @@ again: | |||
876 | err = __rtc_set_alarm(rtc, &alarm); | 847 | err = __rtc_set_alarm(rtc, &alarm); |
877 | if (err == -ETIME) | 848 | if (err == -ETIME) |
878 | goto again; | 849 | goto again; |
879 | } else | 850 | } |
880 | rtc_alarm_disable(rtc); | ||
881 | 851 | ||
882 | mutex_unlock(&rtc->ops_lock); | 852 | mutex_unlock(&rtc->ops_lock); |
883 | } | 853 | } |
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 8cd4b52d4217..f3670cf72587 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -282,7 +282,7 @@ static int coalesce_t2(struct smb_hdr *psecond, struct smb_hdr *pTargetSMB) | |||
282 | byte_count = be32_to_cpu(pTargetSMB->smb_buf_length); | 282 | byte_count = be32_to_cpu(pTargetSMB->smb_buf_length); |
283 | byte_count += total_in_buf2; | 283 | byte_count += total_in_buf2; |
284 | /* don't allow buffer to overflow */ | 284 | /* don't allow buffer to overflow */ |
285 | if (byte_count > CIFSMaxBufSize) | 285 | if (byte_count > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE - 4) |
286 | return -ENOBUFS; | 286 | return -ENOBUFS; |
287 | pTargetSMB->smb_buf_length = cpu_to_be32(byte_count); | 287 | pTargetSMB->smb_buf_length = cpu_to_be32(byte_count); |
288 | 288 | ||
@@ -2122,7 +2122,7 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb_vol *volume_info) | |||
2122 | warned_on_ntlm = true; | 2122 | warned_on_ntlm = true; |
2123 | cERROR(1, "default security mechanism requested. The default " | 2123 | cERROR(1, "default security mechanism requested. The default " |
2124 | "security mechanism will be upgraded from ntlm to " | 2124 | "security mechanism will be upgraded from ntlm to " |
2125 | "ntlmv2 in kernel release 3.2"); | 2125 | "ntlmv2 in kernel release 3.3"); |
2126 | } | 2126 | } |
2127 | ses->overrideSecFlg = volume_info->secFlg; | 2127 | ses->overrideSecFlg = volume_info->secFlg; |
2128 | 2128 | ||
diff --git a/fs/minix/inode.c b/fs/minix/inode.c index 1d9e33966db0..4d46a6a59070 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c | |||
@@ -263,23 +263,6 @@ static int minix_fill_super(struct super_block *s, void *data, int silent) | |||
263 | goto out_no_root; | 263 | goto out_no_root; |
264 | } | 264 | } |
265 | 265 | ||
266 | ret = -ENOMEM; | ||
267 | s->s_root = d_alloc_root(root_inode); | ||
268 | if (!s->s_root) | ||
269 | goto out_iput; | ||
270 | |||
271 | if (!(s->s_flags & MS_RDONLY)) { | ||
272 | if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */ | ||
273 | ms->s_state &= ~MINIX_VALID_FS; | ||
274 | mark_buffer_dirty(bh); | ||
275 | } | ||
276 | if (!(sbi->s_mount_state & MINIX_VALID_FS)) | ||
277 | printk("MINIX-fs: mounting unchecked file system, " | ||
278 | "running fsck is recommended\n"); | ||
279 | else if (sbi->s_mount_state & MINIX_ERROR_FS) | ||
280 | printk("MINIX-fs: mounting file system with errors, " | ||
281 | "running fsck is recommended\n"); | ||
282 | |||
283 | /* Apparently minix can create filesystems that allocate more blocks for | 266 | /* Apparently minix can create filesystems that allocate more blocks for |
284 | * the bitmaps than needed. We simply ignore that, but verify it didn't | 267 | * the bitmaps than needed. We simply ignore that, but verify it didn't |
285 | * create one with not enough blocks and bail out if so. | 268 | * create one with not enough blocks and bail out if so. |
@@ -300,6 +283,23 @@ static int minix_fill_super(struct super_block *s, void *data, int silent) | |||
300 | goto out_iput; | 283 | goto out_iput; |
301 | } | 284 | } |
302 | 285 | ||
286 | ret = -ENOMEM; | ||
287 | s->s_root = d_alloc_root(root_inode); | ||
288 | if (!s->s_root) | ||
289 | goto out_iput; | ||
290 | |||
291 | if (!(s->s_flags & MS_RDONLY)) { | ||
292 | if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */ | ||
293 | ms->s_state &= ~MINIX_VALID_FS; | ||
294 | mark_buffer_dirty(bh); | ||
295 | } | ||
296 | if (!(sbi->s_mount_state & MINIX_VALID_FS)) | ||
297 | printk("MINIX-fs: mounting unchecked file system, " | ||
298 | "running fsck is recommended\n"); | ||
299 | else if (sbi->s_mount_state & MINIX_ERROR_FS) | ||
300 | printk("MINIX-fs: mounting file system with errors, " | ||
301 | "running fsck is recommended\n"); | ||
302 | |||
303 | return 0; | 303 | return 0; |
304 | 304 | ||
305 | out_iput: | 305 | out_iput: |
diff --git a/include/linux/security.h b/include/linux/security.h index 19d8e04e1688..e8c619d39291 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -2056,7 +2056,7 @@ static inline int security_old_inode_init_security(struct inode *inode, | |||
2056 | char **name, void **value, | 2056 | char **name, void **value, |
2057 | size_t *len) | 2057 | size_t *len) |
2058 | { | 2058 | { |
2059 | return 0; | 2059 | return -EOPNOTSUPP; |
2060 | } | 2060 | } |
2061 | 2061 | ||
2062 | static inline int security_inode_create(struct inode *dir, | 2062 | static inline int security_inode_create(struct inode *dir, |
diff --git a/kernel/exit.c b/kernel/exit.c index d0b7d988f873..e6e01b959a0e 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -1540,8 +1540,15 @@ static int wait_consider_task(struct wait_opts *wo, int ptrace, | |||
1540 | } | 1540 | } |
1541 | 1541 | ||
1542 | /* dead body doesn't have much to contribute */ | 1542 | /* dead body doesn't have much to contribute */ |
1543 | if (p->exit_state == EXIT_DEAD) | 1543 | if (unlikely(p->exit_state == EXIT_DEAD)) { |
1544 | /* | ||
1545 | * But do not ignore this task until the tracer does | ||
1546 | * wait_task_zombie()->do_notify_parent(). | ||
1547 | */ | ||
1548 | if (likely(!ptrace) && unlikely(ptrace_reparented(p))) | ||
1549 | wo->notask_error = 0; | ||
1544 | return 0; | 1550 | return 0; |
1551 | } | ||
1545 | 1552 | ||
1546 | /* slay zombie? */ | 1553 | /* slay zombie? */ |
1547 | if (p->exit_state == EXIT_ZOMBIE) { | 1554 | if (p->exit_state == EXIT_ZOMBIE) { |
diff --git a/kernel/hung_task.c b/kernel/hung_task.c index 8b1748d0172c..2e48ec0c2e91 100644 --- a/kernel/hung_task.c +++ b/kernel/hung_task.c | |||
@@ -74,11 +74,17 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout) | |||
74 | 74 | ||
75 | /* | 75 | /* |
76 | * Ensure the task is not frozen. | 76 | * Ensure the task is not frozen. |
77 | * Also, when a freshly created task is scheduled once, changes | 77 | * Also, skip vfork and any other user process that freezer should skip. |
78 | * its state to TASK_UNINTERRUPTIBLE without having ever been | ||
79 | * switched out once, it musn't be checked. | ||
80 | */ | 78 | */ |
81 | if (unlikely(t->flags & PF_FROZEN || !switch_count)) | 79 | if (unlikely(t->flags & (PF_FROZEN | PF_FREEZER_SKIP))) |
80 | return; | ||
81 | |||
82 | /* | ||
83 | * When a freshly created task is scheduled once, changes its state to | ||
84 | * TASK_UNINTERRUPTIBLE without having ever been switched out once, it | ||
85 | * musn't be checked. | ||
86 | */ | ||
87 | if (unlikely(!switch_count)) | ||
82 | return; | 88 | return; |
83 | 89 | ||
84 | if (switch_count != t->last_switch_count) { | 90 | if (switch_count != t->last_switch_count) { |
diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 24d04477b257..78ab24a7b0e4 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c | |||
@@ -96,9 +96,20 @@ void __ptrace_unlink(struct task_struct *child) | |||
96 | */ | 96 | */ |
97 | if (!(child->flags & PF_EXITING) && | 97 | if (!(child->flags & PF_EXITING) && |
98 | (child->signal->flags & SIGNAL_STOP_STOPPED || | 98 | (child->signal->flags & SIGNAL_STOP_STOPPED || |
99 | child->signal->group_stop_count)) | 99 | child->signal->group_stop_count)) { |
100 | child->jobctl |= JOBCTL_STOP_PENDING; | 100 | child->jobctl |= JOBCTL_STOP_PENDING; |
101 | 101 | ||
102 | /* | ||
103 | * This is only possible if this thread was cloned by the | ||
104 | * traced task running in the stopped group, set the signal | ||
105 | * for the future reports. | ||
106 | * FIXME: we should change ptrace_init_task() to handle this | ||
107 | * case. | ||
108 | */ | ||
109 | if (!(child->jobctl & JOBCTL_STOP_SIGMASK)) | ||
110 | child->jobctl |= SIGSTOP; | ||
111 | } | ||
112 | |||
102 | /* | 113 | /* |
103 | * If transition to TASK_STOPPED is pending or in TASK_TRACED, kick | 114 | * If transition to TASK_STOPPED is pending or in TASK_TRACED, kick |
104 | * @child in the butt. Note that @resume should be used iff @child | 115 | * @child in the butt. Note that @resume should be used iff @child |
diff --git a/kernel/signal.c b/kernel/signal.c index b3f78d09a105..206551563cce 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -1994,8 +1994,6 @@ static bool do_signal_stop(int signr) | |||
1994 | */ | 1994 | */ |
1995 | if (!(sig->flags & SIGNAL_STOP_STOPPED)) | 1995 | if (!(sig->flags & SIGNAL_STOP_STOPPED)) |
1996 | sig->group_exit_code = signr; | 1996 | sig->group_exit_code = signr; |
1997 | else | ||
1998 | WARN_ON_ONCE(!current->ptrace); | ||
1999 | 1997 | ||
2000 | sig->group_stop_count = 0; | 1998 | sig->group_stop_count = 0; |
2001 | 1999 | ||
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 6d38d80195cb..845da3ee56a0 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -643,7 +643,7 @@ static int hci_dev_do_close(struct hci_dev *hdev) | |||
643 | if (!test_bit(HCI_RAW, &hdev->flags)) { | 643 | if (!test_bit(HCI_RAW, &hdev->flags)) { |
644 | set_bit(HCI_INIT, &hdev->flags); | 644 | set_bit(HCI_INIT, &hdev->flags); |
645 | __hci_request(hdev, hci_reset_req, 0, | 645 | __hci_request(hdev, hci_reset_req, 0, |
646 | msecs_to_jiffies(HCI_INIT_TIMEOUT)); | 646 | msecs_to_jiffies(250)); |
647 | clear_bit(HCI_INIT, &hdev->flags); | 647 | clear_bit(HCI_INIT, &hdev->flags); |
648 | } | 648 | } |
649 | 649 | ||
diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c index 2c5ff6148589..e68cb440756a 100644 --- a/net/sched/sch_qfq.c +++ b/net/sched/sch_qfq.c | |||
@@ -818,11 +818,11 @@ skip_unblock: | |||
818 | static void qfq_update_start(struct qfq_sched *q, struct qfq_class *cl) | 818 | static void qfq_update_start(struct qfq_sched *q, struct qfq_class *cl) |
819 | { | 819 | { |
820 | unsigned long mask; | 820 | unsigned long mask; |
821 | uint32_t limit, roundedF; | 821 | u64 limit, roundedF; |
822 | int slot_shift = cl->grp->slot_shift; | 822 | int slot_shift = cl->grp->slot_shift; |
823 | 823 | ||
824 | roundedF = qfq_round_down(cl->F, slot_shift); | 824 | roundedF = qfq_round_down(cl->F, slot_shift); |
825 | limit = qfq_round_down(q->V, slot_shift) + (1UL << slot_shift); | 825 | limit = qfq_round_down(q->V, slot_shift) + (1ULL << slot_shift); |
826 | 826 | ||
827 | if (!qfq_gt(cl->F, q->V) || qfq_gt(roundedF, limit)) { | 827 | if (!qfq_gt(cl->F, q->V) || qfq_gt(roundedF, limit)) { |
828 | /* timestamp was stale */ | 828 | /* timestamp was stale */ |
diff --git a/security/security.c b/security/security.c index 0c6cc69c8f86..e2f684aeb70c 100644 --- a/security/security.c +++ b/security/security.c | |||
@@ -381,7 +381,7 @@ int security_old_inode_init_security(struct inode *inode, struct inode *dir, | |||
381 | void **value, size_t *len) | 381 | void **value, size_t *len) |
382 | { | 382 | { |
383 | if (unlikely(IS_PRIVATE(inode))) | 383 | if (unlikely(IS_PRIVATE(inode))) |
384 | return 0; | 384 | return -EOPNOTSUPP; |
385 | return security_ops->inode_init_security(inode, dir, qstr, name, value, | 385 | return security_ops->inode_init_security(inode, dir, qstr, name, value, |
386 | len); | 386 | len); |
387 | } | 387 | } |