From f31ce1cf7e16ccb04f400308eacf40dd81f035a4 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 26 Oct 2014 03:47:19 +0000 Subject: [PATCH] rtsx_usb_ms: Use msleep_interruptible() in polling loop (Closes: #765717) svn path=/dists/sid/linux/; revision=21977 --- debian/changelog | 1 + ...msleep_interruptible-in-polling-loop.patch | 28 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 30 insertions(+) create mode 100644 debian/patches/bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch diff --git a/debian/changelog b/debian/changelog index bab3d6362..82821ef7c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ linux (3.16.5-2) UNRELEASED; urgency=medium (Closes: #765621) * [x86] drm/i915: Initialise userptr mmu_notifier serial to 1 (Closes: #765590) + * rtsx_usb_ms: Use msleep_interruptible() in polling loop (Closes: #765717) [ Mauricio Faria de Oliveira ] * [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles diff --git a/debian/patches/bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch b/debian/patches/bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch new file mode 100644 index 000000000..4999ef8e0 --- /dev/null +++ b/debian/patches/bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch @@ -0,0 +1,28 @@ +From: Ben Hutchings +Date: Sun, 26 Oct 2014 03:39:42 +0000 +Subject: rtsx_usb_ms: Use msleep_interruptible() in polling loop +Bug-Debian: https://bugs.debian.org/765717 + +rtsx_usb_ms creates a task that mostly sleeps, but tasks in +uninterruptible sleep still contribute to the load average (for +bug-compatibility with Unix). A load average of ~1 on a system that +should be idle is somewhat alarming. + +Change the sleep to be interruptible, but still ignore signals. + +A better fix might be to replace this loop with a delayed work item. + +diff --git a/drivers/memstick/host/rtsx_usb_ms.c b/drivers/memstick/host/rtsx_usb_ms.c +index a7282b7..7356780 100644 +--- a/drivers/memstick/host/rtsx_usb_ms.c ++++ b/drivers/memstick/host/rtsx_usb_ms.c +@@ -706,7 +706,8 @@ poll_again: + if (host->eject) + break; + +- msleep(1000); ++ if (msleep_interruptible(1000)) ++ flush_signals(current); + } + + complete(&host->detect_ms_exit); diff --git a/debian/patches/series b/debian/patches/series index eaa644aa5..adbbff578 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -390,3 +390,4 @@ bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch bugfix/all/qla2xxx-fix-kernel-NULL-pointer-access.patch features/all/mmc_block-increase-max_devices.patch bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch +bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch