Message ID | CAHSjozD_NjH0Ta=ELCOqG6ezX=qgteumKBnN2ceqE4ty2FaAZQ@mail.gmail.com |
---|---|
State | New |
Headers | show |
On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: > The TPM class has some common shutdown code that must be executed for > all drivers. This adds some needed functionality for that. > > Signed-off-by: Josh Zimmerman <joshz@google.com> > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: stable@vger.kernel.org Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> I can apply this patch to my tree right now. /Jarkko > > ----- > v2: Add Signed-off-by. > v3: Remove logically separate change. > v4: Add "acked-by" and "cc". > --- > drivers/base/core.c | 5 +++++ > include/linux/device.h | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index 6bb60fb6a30b..687668d9afbe 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -2667,6 +2667,11 @@ void device_shutdown(void) > pm_runtime_get_noresume(dev); > pm_runtime_barrier(dev); > > + if (dev->class && dev->class->shutdown) { > + if (initcall_debug) > + dev_info(dev, "shutdown\n"); > + dev->class->shutdown(dev); > + } > if (dev->bus && dev->bus->shutdown) { > if (initcall_debug) > dev_info(dev, "shutdown\n"); > diff --git a/include/linux/device.h b/include/linux/device.h > index 9ef518af5515..f240baac2001 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -378,6 +378,7 @@ int subsys_virtual_register(struct bus_type *subsys, > * @suspend: Used to put the device to sleep mode, usually to a low power > * state. > * @resume: Used to bring the device from the sleep mode. > + * @shutdown: Called at shut-down time to quiesce the device. > * @ns_type: Callbacks so sysfs can detemine namespaces. > * @namespace: Namespace of the device belongs to this class. > * @pm: The default device power management operations > of this class. > @@ -407,6 +408,7 @@ struct class { > > int (*suspend)(struct device *dev, pm_message_t state); > int (*resume)(struct device *dev); > + int (*shutdown)(struct device *dev); > > const struct kobj_ns_type_operations *ns_type; > const void *(*namespace)(struct device *dev); > -- > 2.13.0.219.gdb65acc882-goog ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: > The TPM class has some common shutdown code that must be executed for > all drivers. This adds some needed functionality for that. > > Signed-off-by: Josh Zimmerman <joshz@google.com> > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: stable@vger.kernel.org Does not apply yet to security-next (ancestor missing). /Jarkko > > ----- > v2: Add Signed-off-by. > v3: Remove logically separate change. > v4: Add "acked-by" and "cc". > --- > drivers/base/core.c | 5 +++++ > include/linux/device.h | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index 6bb60fb6a30b..687668d9afbe 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -2667,6 +2667,11 @@ void device_shutdown(void) > pm_runtime_get_noresume(dev); > pm_runtime_barrier(dev); > > + if (dev->class && dev->class->shutdown) { > + if (initcall_debug) > + dev_info(dev, "shutdown\n"); > + dev->class->shutdown(dev); > + } > if (dev->bus && dev->bus->shutdown) { > if (initcall_debug) > dev_info(dev, "shutdown\n"); > diff --git a/include/linux/device.h b/include/linux/device.h > index 9ef518af5515..f240baac2001 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -378,6 +378,7 @@ int subsys_virtual_register(struct bus_type *subsys, > * @suspend: Used to put the device to sleep mode, usually to a low power > * state. > * @resume: Used to bring the device from the sleep mode. > + * @shutdown: Called at shut-down time to quiesce the device. > * @ns_type: Callbacks so sysfs can detemine namespaces. > * @namespace: Namespace of the device belongs to this class. > * @pm: The default device power management operations > of this class. > @@ -407,6 +408,7 @@ struct class { > > int (*suspend)(struct device *dev, pm_message_t state); > int (*resume)(struct device *dev); > + int (*shutdown)(struct device *dev); > > const struct kobj_ns_type_operations *ns_type; > const void *(*namespace)(struct device *dev); > -- > 2.13.0.219.gdb65acc882-goog ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> wrote: > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: >> The TPM class has some common shutdown code that must be executed for >> all drivers. This adds some needed functionality for that. >> >> Signed-off-by: Josh Zimmerman <joshz@google.com> >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> Cc: stable@vger.kernel.org > > Does not apply yet to security-next (ancestor missing). Hm, it applied cleanly for me to the "next" branch of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. Are you referring to something else with "security-next"? >> ----- >> v2: Add Signed-off-by. >> v3: Remove logically separate change. >> v4: Add "acked-by" and "cc". >> --- >> drivers/base/core.c | 5 +++++ >> include/linux/device.h | 2 ++ >> 2 files changed, 7 insertions(+) >> >> diff --git a/drivers/base/core.c b/drivers/base/core.c >> index 6bb60fb6a30b..687668d9afbe 100644 >> --- a/drivers/base/core.c >> +++ b/drivers/base/core.c >> @@ -2667,6 +2667,11 @@ void device_shutdown(void) >> pm_runtime_get_noresume(dev); >> pm_runtime_barrier(dev); >> >> + if (dev->class && dev->class->shutdown) { >> + if (initcall_debug) >> + dev_info(dev, "shutdown\n"); >> + dev->class->shutdown(dev); >> + } >> if (dev->bus && dev->bus->shutdown) { I just looked again at this line, which I am suddenly skeptical of. Is there any reason to run _both_ the class and the bus or driver shutdown functions? In the code as-is, only the bus or the driver function will execute. Right now, this patch will change that behavior. I suspect I should just add the appropriate "else", but I'm not sure if there is some reason to prefer the behavior as implemented in this version of the patch. >> if (initcall_debug) >> dev_info(dev, "shutdown\n"); >> diff --git a/include/linux/device.h b/include/linux/device.h >> index 9ef518af5515..f240baac2001 100644 >> --- a/include/linux/device.h >> +++ b/include/linux/device.h >> @@ -378,6 +378,7 @@ int subsys_virtual_register(struct bus_type *subsys, >> * @suspend: Used to put the device to sleep mode, usually to a low power >> * state. >> * @resume: Used to bring the device from the sleep mode. >> + * @shutdown: Called at shut-down time to quiesce the device. >> * @ns_type: Callbacks so sysfs can detemine namespaces. >> * @namespace: Namespace of the device belongs to this class. >> * @pm: The default device power management operations >> of this class. >> @@ -407,6 +408,7 @@ struct class { >> >> int (*suspend)(struct device *dev, pm_message_t state); >> int (*resume)(struct device *dev); >> + int (*shutdown)(struct device *dev); >> >> const struct kobj_ns_type_operations *ns_type; >> const void *(*namespace)(struct device *dev); >> -- >> 2.13.0.219.gdb65acc882-goog ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: > >> + if (dev->class && dev->class->shutdown) { > >> + if (initcall_debug) > >> + dev_info(dev, "shutdown\n"); > >> + dev->class->shutdown(dev); > >> + } > >> if (dev->bus && dev->bus->shutdown) { > > I just looked again at this line, which I am suddenly skeptical of. Is there > any reason to run _both_ the class and the bus or driver shutdown > functions? In the code as-is, only the bus or the driver function will > execute. Right now, this patch will change that behavior. I suspect I > should just add the appropriate "else", but I'm not sure if there is > some reason to prefer the behavior as implemented in this version of > the patch. Yes, I think the else should be there. From what I could tell, the intent is that the most generic will then call the least generic in the proper order, eg tpm class shutdown full should then call bus and driver shutdown, if they are defined. This allows each step to inject some action both before and after calling the lower level steps, and follows the same pattern used elsewhere. Jason ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: > On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen > <jarkko.sakkinen@linux.intel.com> wrote: > > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: > >> The TPM class has some common shutdown code that must be executed for > >> all drivers. This adds some needed functionality for that. > >> > >> Signed-off-by: Josh Zimmerman <joshz@google.com> > >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > >> Cc: stable@vger.kernel.org > > > > Does not apply yet to security-next (ancestor missing). > > Hm, it applied cleanly for me to the "next" branch of > git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. > Are you referring to something else with "security-next"? Hmm... I get $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch Applying: Add "shutdown" to "struct class". error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { error: could not build fake ancestor Patch failed at 0001 Add "shutdown" to "struct class". The copy of the patch that failed is found in: .git/rebase-apply/patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". My tree rebased to latest security/next /Jarkko ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Quite strange. Here's what I see. $ git pull Already up-to-date. $ git branch master * next $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch # This is identical to v5 Applying: Add "shutdown" to "struct class". $ git status On branch next Your branch is ahead of 'origin/next' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean $ git log --oneline | head -n 4 58410b1fef64 Add "shutdown" to "struct class". 84e311a15e94 tpm: Issue a TPM2_Shutdown for TPM2 devices. d68c51e0b377 Sync to mainline for security submaintainers to work against 08332893e37a Linux 4.12-rc2 $ git remote -v origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git (fetch) origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git (push) Josh On Thu, Jun 1, 2017 at 10:07 AM, Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> wrote: > On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: >> On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen >> <jarkko.sakkinen@linux.intel.com> wrote: >> > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: >> >> The TPM class has some common shutdown code that must be executed for >> >> all drivers. This adds some needed functionality for that. >> >> >> >> Signed-off-by: Josh Zimmerman <joshz@google.com> >> >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> >> Cc: stable@vger.kernel.org >> > >> > Does not apply yet to security-next (ancestor missing). >> >> Hm, it applied cleanly for me to the "next" branch of >> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. >> Are you referring to something else with "security-next"? > > Hmm... > > I get > > $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch > Applying: Add "shutdown" to "struct class". > error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { > error: could not build fake ancestor > Patch failed at 0001 Add "shutdown" to "struct class". > The copy of the patch that failed is found in: .git/rebase-apply/patch > When you have resolved this problem, run "git am --continue". > If you prefer to skip this patch, run "git am --skip" instead. > To restore the original branch and stop patching, run "git am --abort". > > My tree rebased to latest security/next > > /Jarkko ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Does your patches in my tree if you try it yourself? Very weird... /Jarkko On Fri, Jun 02, 2017 at 03:00:22PM -0700, Josh Zimmerman wrote: > Quite strange. Here's what I see. > > $ git pull > Already up-to-date. > $ git branch > master > * next > $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch > Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. > $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch # This is > identical to v5 > Applying: Add "shutdown" to "struct class". > $ git status > On branch next > Your branch is ahead of 'origin/next' by 2 commits. > (use "git push" to publish your local commits) > > nothing to commit, working tree clean > $ git log --oneline | head -n 4 > 58410b1fef64 Add "shutdown" to "struct class". > 84e311a15e94 tpm: Issue a TPM2_Shutdown for TPM2 devices. > d68c51e0b377 Sync to mainline for security submaintainers to work against > 08332893e37a Linux 4.12-rc2 > $ git remote -v > origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git > (fetch) > origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git > (push) > Josh > > > On Thu, Jun 1, 2017 at 10:07 AM, Jarkko Sakkinen > <jarkko.sakkinen@linux.intel.com> wrote: > > On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: > >> On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen > >> <jarkko.sakkinen@linux.intel.com> wrote: > >> > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: > >> >> The TPM class has some common shutdown code that must be executed for > >> >> all drivers. This adds some needed functionality for that. > >> >> > >> >> Signed-off-by: Josh Zimmerman <joshz@google.com> > >> >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > >> >> Cc: stable@vger.kernel.org > >> > > >> > Does not apply yet to security-next (ancestor missing). > >> > >> Hm, it applied cleanly for me to the "next" branch of > >> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. > >> Are you referring to something else with "security-next"? > > > > Hmm... > > > > I get > > > > $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch > > Applying: Add "shutdown" to "struct class". > > error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { > > error: could not build fake ancestor > > Patch failed at 0001 Add "shutdown" to "struct class". > > The copy of the patch that failed is found in: .git/rebase-apply/patch > > When you have resolved this problem, run "git am --continue". > > If you prefer to skip this patch, run "git am --skip" instead. > > To restore the original branch and stop patching, run "git am --abort". > > > > My tree rebased to latest security/next > > > > /Jarkko ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
I'm not sure where your tree is, but it applies cleanly to https://github.com/PeterHuewe/linux-tpmdd (which was linked as the source of truth from the sourceforge page, https://sourceforge.net/projects/tpmdd/) $ git clone https://github.com/PeterHuewe/linux-tpmdd Cloning into 'linux-tpmdd'... remote: Counting objects: 5394697, done. remote: Compressing objects: 100% (805/805), done. remote: Total 5394697 (delta 722), reused 285 (delta 285), pack-reused 5393607 Receiving objects: 100% (5394697/5394697), 1.74 GiB | 4.58 MiB/s, done. Resolving deltas: 100% (4464433/4464433), done. Checking out files: 100% (59842/59842), done. $ cd linux-tpmdd/ $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch Applying: Add "shutdown" to "struct class". $ git log --oneline | head ba3cbbbe4212 Add "shutdown" to "struct class". 8314e024633c tpm: Issue a TPM2_Shutdown for TPM2 devices. 08332893e37a Linux 4.12-rc2 33c9e9729033 x86: fix 32-bit case of __get_user_asm_u64() 334a023ee509 Clean up x86 unsafe_get/put_user() type handling f3926e4c2a4b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 970c305aa802 Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip e7a3d6274918 Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip a8c39544a6eb osf_wait4(): fix infoleak a7cc722fff0b fix unsafe_put_user() Josh On Mon, Jun 5, 2017 at 5:48 AM, Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> wrote: > Does your patches in my tree if you try it yourself? > > Very weird... > > /Jarkko > > On Fri, Jun 02, 2017 at 03:00:22PM -0700, Josh Zimmerman wrote: >> Quite strange. Here's what I see. >> >> $ git pull >> Already up-to-date. >> $ git branch >> master >> * next >> $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch >> Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. >> $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch # This is >> identical to v5 >> Applying: Add "shutdown" to "struct class". >> $ git status >> On branch next >> Your branch is ahead of 'origin/next' by 2 commits. >> (use "git push" to publish your local commits) >> >> nothing to commit, working tree clean >> $ git log --oneline | head -n 4 >> 58410b1fef64 Add "shutdown" to "struct class". >> 84e311a15e94 tpm: Issue a TPM2_Shutdown for TPM2 devices. >> d68c51e0b377 Sync to mainline for security submaintainers to work against >> 08332893e37a Linux 4.12-rc2 >> $ git remote -v >> origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git >> (fetch) >> origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git >> (push) >> Josh >> >> >> On Thu, Jun 1, 2017 at 10:07 AM, Jarkko Sakkinen >> <jarkko.sakkinen@linux.intel.com> wrote: >> > On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: >> >> On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen >> >> <jarkko.sakkinen@linux.intel.com> wrote: >> >> > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: >> >> >> The TPM class has some common shutdown code that must be executed for >> >> >> all drivers. This adds some needed functionality for that. >> >> >> >> >> >> Signed-off-by: Josh Zimmerman <joshz@google.com> >> >> >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> >> >> Cc: stable@vger.kernel.org >> >> > >> >> > Does not apply yet to security-next (ancestor missing). >> >> >> >> Hm, it applied cleanly for me to the "next" branch of >> >> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. >> >> Are you referring to something else with "security-next"? >> > >> > Hmm... >> > >> > I get >> > >> > $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch >> > Applying: Add "shutdown" to "struct class". >> > error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { >> > error: could not build fake ancestor >> > Patch failed at 0001 Add "shutdown" to "struct class". >> > The copy of the patch that failed is found in: .git/rebase-apply/patch >> > When you have resolved this problem, run "git am --continue". >> > If you prefer to skip this patch, run "git am --skip" instead. >> > To restore the original branch and stop patching, run "git am --abort". >> > >> > My tree rebased to latest security/next >> > >> > /Jarkko ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Hi Jarkko, Were you able to merge my patches? If not can you give me a bit more info about what git repo and branch you're working off of, so I can try to get it to apply to the HEAD of that branch? Thanks, Josh On Mon, Jun 5, 2017 at 11:32 AM, Josh Zimmerman <joshz@google.com> wrote: > I'm not sure where your tree is, but it applies cleanly to > https://github.com/PeterHuewe/linux-tpmdd (which was linked as the > source of truth from the sourceforge page, > https://sourceforge.net/projects/tpmdd/) > > $ git clone https://github.com/PeterHuewe/linux-tpmdd > Cloning into 'linux-tpmdd'... > remote: Counting objects: 5394697, done. > remote: Compressing objects: 100% (805/805), done. > remote: Total 5394697 (delta 722), reused 285 (delta 285), pack-reused 5393607 > Receiving objects: 100% (5394697/5394697), 1.74 GiB | 4.58 MiB/s, done. > Resolving deltas: 100% (4464433/4464433), done. > Checking out files: 100% (59842/59842), done. > $ cd linux-tpmdd/ > $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch > Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. > $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch > Applying: Add "shutdown" to "struct class". > $ git log --oneline | head > ba3cbbbe4212 Add "shutdown" to "struct class". > 8314e024633c tpm: Issue a TPM2_Shutdown for TPM2 devices. > 08332893e37a Linux 4.12-rc2 > 33c9e9729033 x86: fix 32-bit case of __get_user_asm_u64() > 334a023ee509 Clean up x86 unsafe_get/put_user() type handling > f3926e4c2a4b Merge branch 'for-linus' of > git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs > 970c305aa802 Merge branch 'sched-urgent-for-linus' of > git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip > e7a3d6274918 Merge branch 'irq-urgent-for-linus' of > git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip > a8c39544a6eb osf_wait4(): fix infoleak > a7cc722fff0b fix unsafe_put_user() > Josh > > > On Mon, Jun 5, 2017 at 5:48 AM, Jarkko Sakkinen > <jarkko.sakkinen@linux.intel.com> wrote: >> Does your patches in my tree if you try it yourself? >> >> Very weird... >> >> /Jarkko >> >> On Fri, Jun 02, 2017 at 03:00:22PM -0700, Josh Zimmerman wrote: >>> Quite strange. Here's what I see. >>> >>> $ git pull >>> Already up-to-date. >>> $ git branch >>> master >>> * next >>> $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch >>> Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. >>> $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch # This is >>> identical to v5 >>> Applying: Add "shutdown" to "struct class". >>> $ git status >>> On branch next >>> Your branch is ahead of 'origin/next' by 2 commits. >>> (use "git push" to publish your local commits) >>> >>> nothing to commit, working tree clean >>> $ git log --oneline | head -n 4 >>> 58410b1fef64 Add "shutdown" to "struct class". >>> 84e311a15e94 tpm: Issue a TPM2_Shutdown for TPM2 devices. >>> d68c51e0b377 Sync to mainline for security submaintainers to work against >>> 08332893e37a Linux 4.12-rc2 >>> $ git remote -v >>> origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git >>> (fetch) >>> origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git >>> (push) >>> Josh >>> >>> >>> On Thu, Jun 1, 2017 at 10:07 AM, Jarkko Sakkinen >>> <jarkko.sakkinen@linux.intel.com> wrote: >>> > On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: >>> >> On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen >>> >> <jarkko.sakkinen@linux.intel.com> wrote: >>> >> > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: >>> >> >> The TPM class has some common shutdown code that must be executed for >>> >> >> all drivers. This adds some needed functionality for that. >>> >> >> >>> >> >> Signed-off-by: Josh Zimmerman <joshz@google.com> >>> >> >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >>> >> >> Cc: stable@vger.kernel.org >>> >> > >>> >> > Does not apply yet to security-next (ancestor missing). >>> >> >>> >> Hm, it applied cleanly for me to the "next" branch of >>> >> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. >>> >> Are you referring to something else with "security-next"? >>> > >>> > Hmm... >>> > >>> > I get >>> > >>> > $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch >>> > Applying: Add "shutdown" to "struct class". >>> > error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { >>> > error: could not build fake ancestor >>> > Patch failed at 0001 Add "shutdown" to "struct class". >>> > The copy of the patch that failed is found in: .git/rebase-apply/patch >>> > When you have resolved this problem, run "git am --continue". >>> > If you prefer to skip this patch, run "git am --skip" instead. >>> > To restore the original branch and stop patching, run "git am --abort". >>> > >>> > My tree rebased to latest security/next >>> > >>> > /Jarkko ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
The maintainer tree for tpmdd is located at git://git.infradead.org/users/jjs/linux-tpmdd.git I just updated my branches to latest security/next but still get the complaint about ancestors: $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch Applying: Add "shutdown" to "struct class". error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { error: could not build fake ancestor Patch failed at 0001 Add "shutdown" to "struct class". The copy of the patch that failed is found in: .git/rebase-apply/patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". I'm postponing my v4.13 PR up until next week as there's no big features coming up (so I have more time to wait for fixes) so this still can make into that. /Jarkko On Mon, Jun 12, 2017 at 04:08:39PM -0700, Josh Zimmerman wrote: > Hi Jarkko, > > Were you able to merge my patches? If not can you give me a bit more > info about what git repo and branch you're working off of, so I can > try to get it to apply to the HEAD of that branch? > > Thanks, > Josh > > > On Mon, Jun 5, 2017 at 11:32 AM, Josh Zimmerman <joshz@google.com> wrote: > > I'm not sure where your tree is, but it applies cleanly to > > https://github.com/PeterHuewe/linux-tpmdd (which was linked as the > > source of truth from the sourceforge page, > > https://sourceforge.net/projects/tpmdd/) > > > > $ git clone https://github.com/PeterHuewe/linux-tpmdd > > Cloning into 'linux-tpmdd'... > > remote: Counting objects: 5394697, done. > > remote: Compressing objects: 100% (805/805), done. > > remote: Total 5394697 (delta 722), reused 285 (delta 285), pack-reused 5393607 > > Receiving objects: 100% (5394697/5394697), 1.74 GiB | 4.58 MiB/s, done. > > Resolving deltas: 100% (4464433/4464433), done. > > Checking out files: 100% (59842/59842), done. > > $ cd linux-tpmdd/ > > $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch > > Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. > > $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch > > Applying: Add "shutdown" to "struct class". > > $ git log --oneline | head > > ba3cbbbe4212 Add "shutdown" to "struct class". > > 8314e024633c tpm: Issue a TPM2_Shutdown for TPM2 devices. > > 08332893e37a Linux 4.12-rc2 > > 33c9e9729033 x86: fix 32-bit case of __get_user_asm_u64() > > 334a023ee509 Clean up x86 unsafe_get/put_user() type handling > > f3926e4c2a4b Merge branch 'for-linus' of > > git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs > > 970c305aa802 Merge branch 'sched-urgent-for-linus' of > > git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip > > e7a3d6274918 Merge branch 'irq-urgent-for-linus' of > > git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip > > a8c39544a6eb osf_wait4(): fix infoleak > > a7cc722fff0b fix unsafe_put_user() > > Josh > > > > > > On Mon, Jun 5, 2017 at 5:48 AM, Jarkko Sakkinen > > <jarkko.sakkinen@linux.intel.com> wrote: > >> Does your patches in my tree if you try it yourself? > >> > >> Very weird... > >> > >> /Jarkko > >> > >> On Fri, Jun 02, 2017 at 03:00:22PM -0700, Josh Zimmerman wrote: > >>> Quite strange. Here's what I see. > >>> > >>> $ git pull > >>> Already up-to-date. > >>> $ git branch > >>> master > >>> * next > >>> $ git am -3 /tmp/v6-0001-tpm-Issue-a-TPM2_Shutdown-for-TPM2-devices.patch > >>> Applying: tpm: Issue a TPM2_Shutdown for TPM2 devices. > >>> $ git am -3 /tmp/v6-0002-Add-shutdown-to-struct-class.patch # This is > >>> identical to v5 > >>> Applying: Add "shutdown" to "struct class". > >>> $ git status > >>> On branch next > >>> Your branch is ahead of 'origin/next' by 2 commits. > >>> (use "git push" to publish your local commits) > >>> > >>> nothing to commit, working tree clean > >>> $ git log --oneline | head -n 4 > >>> 58410b1fef64 Add "shutdown" to "struct class". > >>> 84e311a15e94 tpm: Issue a TPM2_Shutdown for TPM2 devices. > >>> d68c51e0b377 Sync to mainline for security submaintainers to work against > >>> 08332893e37a Linux 4.12-rc2 > >>> $ git remote -v > >>> origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git > >>> (fetch) > >>> origin git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git > >>> (push) > >>> Josh > >>> > >>> > >>> On Thu, Jun 1, 2017 at 10:07 AM, Jarkko Sakkinen > >>> <jarkko.sakkinen@linux.intel.com> wrote: > >>> > On Wed, May 31, 2017 at 03:01:13PM -0700, Josh Zimmerman wrote: > >>> >> On Tue, May 30, 2017 at 12:54 AM, Jarkko Sakkinen > >>> >> <jarkko.sakkinen@linux.intel.com> wrote: > >>> >> > On Thu, May 25, 2017 at 04:20:30PM -0700, Josh Zimmerman wrote: > >>> >> >> The TPM class has some common shutdown code that must be executed for > >>> >> >> all drivers. This adds some needed functionality for that. > >>> >> >> > >>> >> >> Signed-off-by: Josh Zimmerman <joshz@google.com> > >>> >> >> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > >>> >> >> Cc: stable@vger.kernel.org > >>> >> > > >>> >> > Does not apply yet to security-next (ancestor missing). > >>> >> > >>> >> Hm, it applied cleanly for me to the "next" branch of > >>> >> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git. > >>> >> Are you referring to something else with "security-next"? > >>> > > >>> > Hmm... > >>> > > >>> > I get > >>> > > >>> > $ git am -3 ~/Downloads/v5-2-2-Add-shutdown-to-struct-class-..patch > >>> > Applying: Add "shutdown" to "struct class". > >>> > error: patch fragment without header at line 7: @@ -407,6 +408,7 @@ struct class { > >>> > error: could not build fake ancestor > >>> > Patch failed at 0001 Add "shutdown" to "struct class". > >>> > The copy of the patch that failed is found in: .git/rebase-apply/patch > >>> > When you have resolved this problem, run "git am --continue". > >>> > If you prefer to skip this patch, run "git am --skip" instead. > >>> > To restore the original branch and stop patching, run "git am --abort". > >>> > > >>> > My tree rebased to latest security/next > >>> > > >>> > /Jarkko ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
diff --git a/drivers/base/core.c b/drivers/base/core.c index 6bb60fb6a30b..687668d9afbe 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -2667,6 +2667,11 @@ void device_shutdown(void) pm_runtime_get_noresume(dev); pm_runtime_barrier(dev); + if (dev->class && dev->class->shutdown) { + if (initcall_debug) + dev_info(dev, "shutdown\n"); + dev->class->shutdown(dev); + } if (dev->bus && dev->bus->shutdown) { if (initcall_debug) dev_info(dev, "shutdown\n"); diff --git a/include/linux/device.h b/include/linux/device.h index 9ef518af5515..f240baac2001 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -378,6 +378,7 @@ int subsys_virtual_register(struct bus_type *subsys, * @suspend: Used to put the device to sleep mode, usually to a low power * state. * @resume: Used to bring the device from the sleep mode. + * @shutdown: Called at shut-down time to quiesce the device. * @ns_type: Callbacks so sysfs can detemine namespaces. * @namespace: Namespace of the device belongs to this class. * @pm: The default device power management operations