* [PATCH 0/2] test capability for remote task @ 2016-12-21 16:10 Jike Song 2016-12-21 16:10 ` [PATCH 1/2] capability: export has_capability Jike Song 2016-12-21 16:10 ` [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task Jike Song 0 siblings, 2 replies; 8+ messages in thread From: Jike Song @ 2016-12-21 16:10 UTC (permalink / raw) To: serge, alex.williamson Cc: linux-security-module, kvm, linux-kernel, kwankhede, kraxel, jike.song Sometimes vfio iommu type1 needs to pin memory for a remote task other than current, thereby needs to test the CAP_IPC_LOCK capability for that task. The proper routine for this purpose is has_capability(), but it is not yet exported for modules. None of currently exported capability- testing symbols allows a specified task. So here has_capability() is exported then used in the vfio iommu type1 driver. Jike Song (2): capability: export has_capability vfio iommu type1: fix the testing of capability for remote task drivers/vfio/vfio_iommu_type1.c | 6 ++---- kernel/capability.c | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) -- 2.4.4.488.gdf97e5d ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] capability: export has_capability 2016-12-21 16:10 [PATCH 0/2] test capability for remote task Jike Song @ 2016-12-21 16:10 ` Jike Song 2017-01-11 18:47 ` Alex Williamson 2016-12-21 16:10 ` [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task Jike Song 1 sibling, 1 reply; 8+ messages in thread From: Jike Song @ 2016-12-21 16:10 UTC (permalink / raw) To: serge, alex.williamson Cc: linux-security-module, kvm, linux-kernel, kwankhede, kraxel, jike.song has_capability() is sometimes needed by modules to test capability for specified task other than current, so export it. Cc: Alex Williamson <alex.williamson@redhat.com> Cc: Kirti Wankhede <kwankhede@nvidia.com> Signed-off-by: Jike Song <jike.song@intel.com> --- kernel/capability.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/capability.c b/kernel/capability.c index 4984e1f..e2e198c 100644 --- a/kernel/capability.c +++ b/kernel/capability.c @@ -318,6 +318,7 @@ bool has_capability(struct task_struct *t, int cap) { return has_ns_capability(t, &init_user_ns, cap); } +EXPORT_SYMBOL(has_capability); /** * has_ns_capability_noaudit - Does a task have a capability (unaudited) -- 2.4.4.488.gdf97e5d ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] capability: export has_capability 2016-12-21 16:10 ` [PATCH 1/2] capability: export has_capability Jike Song @ 2017-01-11 18:47 ` Alex Williamson 2017-01-12 0:56 ` Jike Song 2017-01-12 6:45 ` Serge E. Hallyn 0 siblings, 2 replies; 8+ messages in thread From: Alex Williamson @ 2017-01-11 18:47 UTC (permalink / raw) To: Jike Song Cc: serge, linux-security-module, kvm, linux-kernel, kwankhede, kraxel On Thu, 22 Dec 2016 00:10:15 +0800 Jike Song <jike.song@intel.com> wrote: > has_capability() is sometimes needed by modules to test capability > for specified task other than current, so export it. > > Cc: Alex Williamson <alex.williamson@redhat.com> > Cc: Kirti Wankhede <kwankhede@nvidia.com> > Signed-off-by: Jike Song <jike.song@intel.com> > --- > kernel/capability.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/capability.c b/kernel/capability.c > index 4984e1f..e2e198c 100644 > --- a/kernel/capability.c > +++ b/kernel/capability.c > @@ -318,6 +318,7 @@ bool has_capability(struct task_struct *t, int cap) > { > return has_ns_capability(t, &init_user_ns, cap); > } > +EXPORT_SYMBOL(has_capability); > > /** > * has_ns_capability_noaudit - Does a task have a capability (unaudited) Are we using EXPORT_SYMBOL vs EXPORT_SYMBOL_GPL here to match the other exports in this file? We could use _GPL to match the expected caller of this. Serge, Do you have any comments on this patch? I'd be happy to pull it through the vfio tree with an appropriate Ack. Thanks, Alex ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] capability: export has_capability 2017-01-11 18:47 ` Alex Williamson @ 2017-01-12 0:56 ` Jike Song 2017-01-12 6:45 ` Serge E. Hallyn 1 sibling, 0 replies; 8+ messages in thread From: Jike Song @ 2017-01-12 0:56 UTC (permalink / raw) To: Alex Williamson Cc: serge, linux-security-module, kvm, linux-kernel, kwankhede, kraxel On 01/12/2017 02:47 AM, Alex Williamson wrote: > On Thu, 22 Dec 2016 00:10:15 +0800 > Jike Song <jike.song@intel.com> wrote: > >> has_capability() is sometimes needed by modules to test capability >> for specified task other than current, so export it. >> >> Cc: Alex Williamson <alex.williamson@redhat.com> >> Cc: Kirti Wankhede <kwankhede@nvidia.com> >> Signed-off-by: Jike Song <jike.song@intel.com> >> --- >> kernel/capability.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/kernel/capability.c b/kernel/capability.c >> index 4984e1f..e2e198c 100644 >> --- a/kernel/capability.c >> +++ b/kernel/capability.c >> @@ -318,6 +318,7 @@ bool has_capability(struct task_struct *t, int cap) >> { >> return has_ns_capability(t, &init_user_ns, cap); >> } >> +EXPORT_SYMBOL(has_capability); >> >> /** >> * has_ns_capability_noaudit - Does a task have a capability (unaudited) > > Are we using EXPORT_SYMBOL vs EXPORT_SYMBOL_GPL here to match the other > exports in this file? We could use _GPL to match the expected caller > of this. > Yes, I chose EXPORT_SYMBOL to match the existing exports in capability.c. Either is good to me, of course :) > > Serge, > > Do you have any comments on this patch? I'd be happy to pull it > through the vfio tree with an appropriate Ack. Thanks, Guess Serge still on Xmas vocation? :) -- Thanks, Jike ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] capability: export has_capability 2017-01-11 18:47 ` Alex Williamson 2017-01-12 0:56 ` Jike Song @ 2017-01-12 6:45 ` Serge E. Hallyn 1 sibling, 0 replies; 8+ messages in thread From: Serge E. Hallyn @ 2017-01-12 6:45 UTC (permalink / raw) To: Alex Williamson Cc: Jike Song, serge, linux-security-module, kvm, linux-kernel, kwankhede, kraxel On Wed, Jan 11, 2017 at 01:47:01PM -0500, Alex Williamson wrote: > On Thu, 22 Dec 2016 00:10:15 +0800 > Jike Song <jike.song@intel.com> wrote: > > > has_capability() is sometimes needed by modules to test capability > > for specified task other than current, so export it. > > > > Cc: Alex Williamson <alex.williamson@redhat.com> > > Cc: Kirti Wankhede <kwankhede@nvidia.com> > > Signed-off-by: Jike Song <jike.song@intel.com> > > --- > > kernel/capability.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/kernel/capability.c b/kernel/capability.c > > index 4984e1f..e2e198c 100644 > > --- a/kernel/capability.c > > +++ b/kernel/capability.c > > @@ -318,6 +318,7 @@ bool has_capability(struct task_struct *t, int cap) > > { > > return has_ns_capability(t, &init_user_ns, cap); > > } > > +EXPORT_SYMBOL(has_capability); > > > > /** > > * has_ns_capability_noaudit - Does a task have a capability (unaudited) > > Are we using EXPORT_SYMBOL vs EXPORT_SYMBOL_GPL here to match the other > exports in this file? We could use _GPL to match the expected caller > of this. > > > Serge, > > Do you have any comments on this patch? I'd be happy to pull it > through the vfio tree with an appropriate Ack. Thanks, Sure, thanks, looks good to me. Acked-by: Serge Hallyn <serge@hallyn.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task 2016-12-21 16:10 [PATCH 0/2] test capability for remote task Jike Song 2016-12-21 16:10 ` [PATCH 1/2] capability: export has_capability Jike Song @ 2016-12-21 16:10 ` Jike Song 2016-12-22 12:20 ` Kirti Wankhede 1 sibling, 1 reply; 8+ messages in thread From: Jike Song @ 2016-12-21 16:10 UTC (permalink / raw) To: serge, alex.williamson Cc: linux-security-module, kvm, linux-kernel, kwankhede, kraxel, jike.song Before the mdev enhancement type1 iommu used capable() to test the capability of current task; in the course of mdev development a new requirement, testing for another task other than current, was raised. ns_capable() was used for this purpose, however it still tests current, the only difference is, in a specified namespace. Fix it by using has_capability() instead, which tests the cap for specified task in init_user_ns, the same namespace as capable(). Cc: Alex Williamson <alex.williamson@redhat.com> Cc: Kirti Wankhede <kwankhede@nvidia.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Jike Song <jike.song@intel.com> --- drivers/vfio/vfio_iommu_type1.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index f3726ba..b54aedf 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -394,8 +394,7 @@ static long vfio_pin_pages_remote(struct vfio_dma *dma, unsigned long vaddr, long npage, unsigned long *pfn_base) { unsigned long limit; - bool lock_cap = ns_capable(task_active_pid_ns(dma->task)->user_ns, - CAP_IPC_LOCK); + bool lock_cap = has_capability(dma->task, CAP_IPC_LOCK); struct mm_struct *mm; long ret, i = 0, lock_acct = 0; bool rsvd; @@ -491,8 +490,7 @@ static int vfio_pin_page_external(struct vfio_dma *dma, unsigned long vaddr, unsigned long *pfn_base, bool do_accounting) { unsigned long limit; - bool lock_cap = ns_capable(task_active_pid_ns(dma->task)->user_ns, - CAP_IPC_LOCK); + bool lock_cap = has_capability(dma->task, CAP_IPC_LOCK); struct mm_struct *mm; int ret; bool rsvd; -- 2.4.4.488.gdf97e5d ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task 2016-12-21 16:10 ` [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task Jike Song @ 2016-12-22 12:20 ` Kirti Wankhede 2016-12-23 2:36 ` Jike Song 0 siblings, 1 reply; 8+ messages in thread From: Kirti Wankhede @ 2016-12-22 12:20 UTC (permalink / raw) To: Jike Song, serge, alex.williamson Cc: linux-security-module, kvm, linux-kernel, kraxel On 12/21/2016 9:40 PM, Jike Song wrote: > Before the mdev enhancement type1 iommu used capable() to test the > capability of current task; in the course of mdev development a > new requirement, testing for another task other than current, was > raised. ns_capable() was used for this purpose, however it still > tests current, the only difference is, in a specified namespace. > > Fix it by using has_capability() instead, which tests the cap for > specified task in init_user_ns, the same namespace as capable(). > > Cc: Alex Williamson <alex.williamson@redhat.com> > Cc: Kirti Wankhede <kwankhede@nvidia.com> > Cc: Gerd Hoffmann <kraxel@redhat.com> > Signed-off-by: Jike Song <jike.song@intel.com> > --- > drivers/vfio/vfio_iommu_type1.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c > index f3726ba..b54aedf 100644 > --- a/drivers/vfio/vfio_iommu_type1.c > +++ b/drivers/vfio/vfio_iommu_type1.c > @@ -394,8 +394,7 @@ static long vfio_pin_pages_remote(struct vfio_dma *dma, unsigned long vaddr, > long npage, unsigned long *pfn_base) > { > unsigned long limit; > - bool lock_cap = ns_capable(task_active_pid_ns(dma->task)->user_ns, > - CAP_IPC_LOCK); > + bool lock_cap = has_capability(dma->task, CAP_IPC_LOCK); Hi Jike, Alex's patch already changes this to capable(), you need to resolve. https://lkml.org/lkml/2016/12/20/490 You need to do only below change, which looks fine to me. > struct mm_struct *mm; > long ret, i = 0, lock_acct = 0; > bool rsvd; > @@ -491,8 +490,7 @@ static int vfio_pin_page_external(struct vfio_dma *dma, unsigned long vaddr, > unsigned long *pfn_base, bool do_accounting) > { > unsigned long limit; > - bool lock_cap = ns_capable(task_active_pid_ns(dma->task)->user_ns, > - CAP_IPC_LOCK); > + bool lock_cap = has_capability(dma->task, CAP_IPC_LOCK); > struct mm_struct *mm; > int ret; > bool rsvd; > Thanks, Kirti ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task 2016-12-22 12:20 ` Kirti Wankhede @ 2016-12-23 2:36 ` Jike Song 0 siblings, 0 replies; 8+ messages in thread From: Jike Song @ 2016-12-23 2:36 UTC (permalink / raw) To: Kirti Wankhede Cc: serge, alex.williamson, linux-security-module, kvm, linux-kernel, kraxel On 12/22/2016 08:20 PM, Kirti Wankhede wrote: > On 12/21/2016 9:40 PM, Jike Song wrote: >> Before the mdev enhancement type1 iommu used capable() to test the >> capability of current task; in the course of mdev development a >> new requirement, testing for another task other than current, was >> raised. ns_capable() was used for this purpose, however it still >> tests current, the only difference is, in a specified namespace. >> >> Fix it by using has_capability() instead, which tests the cap for >> specified task in init_user_ns, the same namespace as capable(). >> >> Cc: Alex Williamson <alex.williamson@redhat.com> >> Cc: Kirti Wankhede <kwankhede@nvidia.com> >> Cc: Gerd Hoffmann <kraxel@redhat.com> >> Signed-off-by: Jike Song <jike.song@intel.com> >> --- >> drivers/vfio/vfio_iommu_type1.c | 6 ++---- >> 1 file changed, 2 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c >> index f3726ba..b54aedf 100644 >> --- a/drivers/vfio/vfio_iommu_type1.c >> +++ b/drivers/vfio/vfio_iommu_type1.c >> @@ -394,8 +394,7 @@ static long vfio_pin_pages_remote(struct vfio_dma *dma, unsigned long vaddr, >> long npage, unsigned long *pfn_base) >> { >> unsigned long limit; >> - bool lock_cap = ns_capable(task_active_pid_ns(dma->task)->user_ns, >> - CAP_IPC_LOCK); >> + bool lock_cap = has_capability(dma->task, CAP_IPC_LOCK); > > > Hi Jike, > > Alex's patch already changes this to capable(), you need to resolve. > https://lkml.org/lkml/2016/12/20/490 > > You need to do only below change, which looks fine to me. > Thanks for the point, will change it in v2. However, that will probably be after patch 1/2 accepted, otherwise we get undefined symbols. -- Thanks, Jike >> struct mm_struct *mm; >> long ret, i = 0, lock_acct = 0; >> bool rsvd; >> @@ -491,8 +490,7 @@ static int vfio_pin_page_external(struct vfio_dma *dma, unsigned long vaddr, >> unsigned long *pfn_base, bool do_accounting) >> { >> unsigned long limit; >> - bool lock_cap = ns_capable(task_active_pid_ns(dma->task)->user_ns, >> - CAP_IPC_LOCK); >> + bool lock_cap = has_capability(dma->task, CAP_IPC_LOCK); >> struct mm_struct *mm; >> int ret; >> bool rsvd; >> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-01-12 6:45 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-12-21 16:10 [PATCH 0/2] test capability for remote task Jike Song 2016-12-21 16:10 ` [PATCH 1/2] capability: export has_capability Jike Song 2017-01-11 18:47 ` Alex Williamson 2017-01-12 0:56 ` Jike Song 2017-01-12 6:45 ` Serge E. Hallyn 2016-12-21 16:10 ` [PATCH 2/2] vfio iommu type1: fix the testing of capability for remote task Jike Song 2016-12-22 12:20 ` Kirti Wankhede 2016-12-23 2:36 ` Jike Song
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).