LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 2/2] fs: use inode_set_user to set uid/gid of inode
From: David Miller @ 2013-08-23  5:21 UTC (permalink / raw)
  To: rui.xiang
  Cc: linux-s390, linux-ia64, linux-rdma, netdev, linux-usb,
	linux-kernel, linux-mm, viro, cgroups, linux-fsdevel,
	v9fs-developer, linuxppc-dev
In-Reply-To: <1377226118-43756-3-git-send-email-rui.xiang@huawei.com>

From: Rui Xiang <rui.xiang@huawei.com>
Date: Fri, 23 Aug 2013 10:48:38 +0800

> Use the new interface to set i_uid/i_gid in inode struct.
> 
> Signed-off-by: Rui Xiang <rui.xiang@huawei.com>

For the networking bits:

Acked-by: David S. Miller <davem@davemloft.net>

^ permalink raw reply

* Re: [PATCH 2/3 V3] mmc:sdhc: get voltage from sdhc host
From: Zhang Haijun @ 2013-08-23  5:08 UTC (permalink / raw)
  To: Chris
  Cc: Anton Vorontsov, linux-mmc, Haijun Zhang, scottwood, cjb,
	linuxppc-dev, X.Xie
In-Reply-To: <20130823014841.GD24803@teo>

Hi, Chris

Could help give some advice on this patch set ?

Thanks in advance.


On 08/23/2013 09:48 AM, Anton Vorontsov wrote:
> On Mon, Aug 12, 2013 at 09:39:06AM +0800, Haijun Zhang wrote:
>> We use host->ocr_mask to hold the voltage get from device-tree
>> node, In case host->ocr_mask was available, we use host->ocr_mask
>> as the final available voltage can be used by MMC/SD/SDIO card.
>>
>> Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com>
>> ---
> Reviewed-by: Anton Vorontsov <anton@enomsg.org>
>


-- 
Thanks & Regards

Haijun

^ permalink raw reply

* Re: [PATCH] powerpc/kvm: Handle the boundary condition correctly
From: Benjamin Herrenschmidt @ 2013-08-23  4:28 UTC (permalink / raw)
  To: Aneesh Kumar K.V; +Cc: linuxppc-dev, paulus, Alexander Graf, kvm-ppc
In-Reply-To: <87haeh13s2.fsf@linux.vnet.ibm.com>

On Fri, 2013-08-23 at 09:01 +0530, Aneesh Kumar K.V wrote:
> Alexander Graf <agraf@suse.de> writes:
> 
> > On 22.08.2013, at 12:37, Aneesh Kumar K.V wrote:
> >
> >> From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
> >
> > Isn't this you?
> 
> Yes. The patches are generated using git format-patch and sent by
> git send-email. That's how it always created patches for me. I am not sure if
> there is a config I can change to avoid having From:

Don't bother, that's perfectly fine, and git am will do the right thing.

Cheers,
Ben.

> >
> >> 
> >> We should be able to copy upto count bytes
> >
> > Why?
> >
> 
> Without this we end up doing
> 
>  +    struct kvm_get_htab_buf {
>  +        struct kvm_get_htab_header header;
>  +        /*
>  +         * Older kernel required one extra byte.
>  +         */
>  +        unsigned long hpte[3];
>  +    } hpte_buf;
> 
> 
> even though we are only looking for one hpte entry.
> 
> http://mid.gmane.org/1376995766-16526-4-git-send-email-aneesh.kumar@linux.vnet.ibm.com
> 
> >
> > Alex
> >
> >> 
> >> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> >> ---
> >> arch/powerpc/kvm/book3s_64_mmu_hv.c | 4 ++--
> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> >> 
> >> diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> >> index 710d313..0ae6bb6 100644
> >> --- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
> >> +++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
> >> @@ -1362,7 +1362,7 @@ static ssize_t kvm_htab_read(struct file *file, char __user *buf,
> >> 	lbuf = (unsigned long __user *)buf;
> >> 
> >> 	nb = 0;
> >> -	while (nb + sizeof(hdr) + HPTE_SIZE < count) {
> >> +	while (nb + sizeof(hdr) + HPTE_SIZE <= count) {
> >> 		/* Initialize header */
> >> 		hptr = (struct kvm_get_htab_header __user *)buf;
> >> 		hdr.n_valid = 0;
> >> @@ -1385,7 +1385,7 @@ static ssize_t kvm_htab_read(struct file *file, char __user *buf,
> >> 		/* Grab a series of valid entries */
> >> 		while (i < kvm->arch.hpt_npte &&
> >> 		       hdr.n_valid < 0xffff &&
> >> -		       nb + HPTE_SIZE < count &&
> >> +		       nb + HPTE_SIZE <= count &&
> >> 		       record_hpte(flags, hptp, hpte, revp, 1, first_pass)) {
> >> 			/* valid entry, write it out */
> >> 			++hdr.n_valid;
> >> -- 
> >> 1.8.1.2
> >> 

^ permalink raw reply

* Re: [PATCH 0/2] fs: supply inode uid/gid setting interface
From: Greg KH @ 2013-08-23  4:10 UTC (permalink / raw)
  To: Rui Xiang
  Cc: linux-s390, linux-ia64, linux-rdma, netdev, linux-usb,
	linux-kernel, linux-mm, viro, cgroups, linux-fsdevel,
	v9fs-developer, linuxppc-dev
In-Reply-To: <1377226118-43756-1-git-send-email-rui.xiang@huawei.com>

On Fri, Aug 23, 2013 at 10:48:36AM +0800, Rui Xiang wrote:
> This patchset implements an accessor functions to set uid/gid
> in inode struct. Just finish code clean up.

Why?

^ permalink raw reply

* Re: [PATCH] iommu: WARN_ON when removing a device with no iommu_group associated
From: Alex Williamson @ 2013-08-23  3:33 UTC (permalink / raw)
  To: Wei Yang; +Cc: benh, aik, linux-kernel, iommu, paulus, linuxppc-dev
In-Reply-To: <1377222911-12144-1-git-send-email-weiyang@linux.vnet.ibm.com>

[+cc iommu]

On Fri, 2013-08-23 at 09:55 +0800, Wei Yang wrote:
> When removing a device from the system, iommu_group driver will try to
> disconnect it from its group. While in some cases, one device may not
> associated with any iommu_group. For example, not enough DMA address space.
> 
> In the generic bus notification, it will check dev->iommu_group before calling
> iommu_group_remove_device(). While in some cases, developers may call
> iommu_group_remove_device() in a different code path and without check. For
> those devices with dev->iommu_group set to NULL, kernel will crash.
> 
> This patch gives a warning and return when trying to remove a device from an
> iommu_group with dev->iommu_group set to NULL. This helps to indicate some bad
> behavior and also guard the kernel.
> 
> Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>

Acked-by: Alex Williamson <alex.williamson@redhat.com>

> ---
>  drivers/iommu/iommu.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index fbe9ca7..43396f0 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -379,6 +379,9 @@ void iommu_group_remove_device(struct device *dev)
>  	struct iommu_group *group = dev->iommu_group;
>  	struct iommu_device *tmp_device, *device = NULL;
>  
> +	if (WARN_ON(!group))
> +		return;
> +
>  	/* Pre-notify listeners that a device is being removed. */
>  	blocking_notifier_call_chain(&group->notifier,
>  				     IOMMU_GROUP_NOTIFY_DEL_DEVICE, dev);

^ permalink raw reply

* Re: [PATCH] powerpc/kvm: Handle the boundary condition correctly
From: Aneesh Kumar K.V @ 2013-08-23  3:31 UTC (permalink / raw)
  To: Alexander Graf; +Cc: paulus, linuxppc-dev, kvm-ppc
In-Reply-To: <1683D101-052D-4BEB-8ED1-6F32C6904850@suse.de>

Alexander Graf <agraf@suse.de> writes:

> On 22.08.2013, at 12:37, Aneesh Kumar K.V wrote:
>
>> From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
>
> Isn't this you?

Yes. The patches are generated using git format-patch and sent by
git send-email. That's how it always created patches for me. I am not sure if
there is a config I can change to avoid having From:

>
>> 
>> We should be able to copy upto count bytes
>
> Why?
>

Without this we end up doing

 +    struct kvm_get_htab_buf {
 +        struct kvm_get_htab_header header;
 +        /*
 +         * Older kernel required one extra byte.
 +         */
 +        unsigned long hpte[3];
 +    } hpte_buf;


even though we are only looking for one hpte entry.

http://mid.gmane.org/1376995766-16526-4-git-send-email-aneesh.kumar@linux.vnet.ibm.com

>
> Alex
>
>> 
>> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
>> ---
>> arch/powerpc/kvm/book3s_64_mmu_hv.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
>> index 710d313..0ae6bb6 100644
>> --- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
>> +++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
>> @@ -1362,7 +1362,7 @@ static ssize_t kvm_htab_read(struct file *file, char __user *buf,
>> 	lbuf = (unsigned long __user *)buf;
>> 
>> 	nb = 0;
>> -	while (nb + sizeof(hdr) + HPTE_SIZE < count) {
>> +	while (nb + sizeof(hdr) + HPTE_SIZE <= count) {
>> 		/* Initialize header */
>> 		hptr = (struct kvm_get_htab_header __user *)buf;
>> 		hdr.n_valid = 0;
>> @@ -1385,7 +1385,7 @@ static ssize_t kvm_htab_read(struct file *file, char __user *buf,
>> 		/* Grab a series of valid entries */
>> 		while (i < kvm->arch.hpt_npte &&
>> 		       hdr.n_valid < 0xffff &&
>> -		       nb + HPTE_SIZE < count &&
>> +		       nb + HPTE_SIZE <= count &&
>> 		       record_hpte(flags, hptp, hpte, revp, 1, first_pass)) {
>> 			/* valid entry, write it out */
>> 			++hdr.n_valid;
>> -- 
>> 1.8.1.2
>> 

^ permalink raw reply

* Re: [PATCH v7 2/3] DMA: Freescale: Add new 8-channel DMA engine device tree nodes
From: Hongbo Zhang @ 2013-08-23  3:17 UTC (permalink / raw)
  To: Stephen Warren
  Cc: devicetree, vinod.koul, linux-kernel, djbw, Scott Wood,
	linuxppc-dev
In-Reply-To: <52154A34.4020405@wwwdotorg.org>

On 08/22/2013 07:16 AM, Stephen Warren wrote:
> On 08/21/2013 05:00 PM, Scott Wood wrote:
>> On Wed, 2013-08-21 at 16:40 -0600, Stephen Warren wrote:
>>> On 07/29/2013 04:49 AM, hongbo.zhang@freescale.com wrote:
>>>> +        - reg               : <registers mapping for channel>
>>>> +        - interrupts        : <interrupt mapping for DMA channel IRQ>
>>> s/interrupts/specifier/
>> Do you mean s/interrupt mapping/interrupt specifier/?
>>
>> And probably s/registers mapping/register specifier/ as well.
> Yup.
>
OK, I will update these descriptions.

^ permalink raw reply

* RE: [PATCH V5 3/5] POWER/cpuidle: Generic IBM-POWER backend cpuidle driver.
From: Wang Dongsheng-B40534 @ 2013-08-23  3:16 UTC (permalink / raw)
  To: Deepthi Dharwar, benh@kernel.crashing.org,
	daniel.lezcano@linaro.org, linux-kernel@vger.kernel.org,
	Wood Scott-B07421, linux-pm@lists.linux-foundation.org,
	linuxppc-dev@lists.ozlabs.org
  Cc: preeti@linux.vnet.ibm.com
In-Reply-To: <20130822095357.27416.48110.stgit@deepthi.in.ibm.com>

DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZyBiL2RyaXZlcnMvY3B1aWRs
ZS9LY29uZmlnDQo+IGluZGV4IDBlMmNkNWMuLmU4MDVkY2QgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl
cnMvY3B1aWRsZS9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvY3B1aWRsZS9LY29uZmlnDQoNCk1h
eWJlIGRyaXZlcnMvY3B1aWRsZS9LY29uZmlnLnBvd2VycGMgaXMgYmV0dGVyPyBMaWtlIGFybS4N
Cg0KPiArb2JqLSQoQ09ORklHX0NQVV9JRExFX0lCTV9QT1dFUikgKz0gY3B1aWRsZS1pYm0tcG93
ZXIubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtaWJtLXBvd2VyLmMN
Cj4gYi9kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1pYm0tcG93ZXIuYw0KPiBuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi40ZWU1YTk0DQo+IC0tLSAvZGV2L251bGwNCj4gKysr
IGIvZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtaWJtLXBvd2VyLmMNCj4gQEAgLTAsMCArMSwzMDQg
QEANCj4gKy8qDQo+ICsgKiAgY3B1aWRsZS1pYm0tcG93ZXIgLSBpZGxlIHN0YXRlIGNwdWlkbGUg
ZHJpdmVyLg0KPiArICogIEFkYXB0ZWQgZnJvbSBkcml2ZXJzL2lkbGUvaW50ZWxfaWRsZS5jIGFu
ZA0KPiArICogIGRyaXZlcnMvYWNwaS9wcm9jZXNzb3JfaWRsZS5jDQo+ICsgKg0KPiArICovDQo+
ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1
bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW9k
dWxlcGFyYW0uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jcHVpZGxlLmg+DQo+ICsjaW5jbHVkZSA8
bGludXgvY3B1Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4NCj4gKw0KPiArI2lu
Y2x1ZGUgPGFzbS9wYWNhLmg+DQo+ICsjaW5jbHVkZSA8YXNtL3JlZy5oPg0KPiArI2luY2x1ZGUg
PGFzbS9tYWNoZGVwLmg+DQo+ICsjaW5jbHVkZSA8YXNtL2Zpcm13YXJlLmg+DQo+ICsjaW5jbHVk
ZSA8YXNtL3J1bmxhdGNoLmg+DQo+ICsjaW5jbHVkZSA8YXNtL3BscGFyX3dyYXBwZXJzLmg+DQo+
ICsNCj4gK3N0cnVjdCBjcHVpZGxlX2RyaXZlciBwb3dlcl9pZGxlX2RyaXZlciA9IHsNCj4gKwku
bmFtZSAgICAgICAgICAgICA9ICJJQk0tUE9XRVItSWRsZSIsDQo+ICsJLm93bmVyICAgICAgICAg
ICAgPSBUSElTX01PRFVMRSwNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgTUFYX0lETEVfU1RBVEVf
Q09VTlQJMg0KPiArDQo+ICtzdGF0aWMgaW50IG1heF9pZGxlX3N0YXRlID0gTUFYX0lETEVfU1RB
VEVfQ09VTlQgLSAxOw0KDQpBZ2FpbiwgZG8gbm90IHVzZSB0aGUgbWFjcm8uDQoNCj4gK3N0YXRp
YyBzdHJ1Y3QgY3B1aWRsZV9zdGF0ZSAqY3B1aWRsZV9zdGF0ZV90YWJsZTsNCj4gKw0KPiArc3Rh
dGljIGlubGluZSB2b2lkIGlkbGVfbG9vcF9wcm9sb2codW5zaWduZWQgbG9uZyAqaW5fcHVycikN
Cj4gK3sNCj4gKwkqaW5fcHVyciA9IG1mc3ByKFNQUk5fUFVSUik7DQo+ICsJLyoNCj4gKwkgKiBJ
bmRpY2F0ZSB0byB0aGUgSFYgdGhhdCB3ZSBhcmUgaWRsZS4gTm93IHdvdWxkIGJlDQo+ICsJICog
YSBnb29kIHRpbWUgdG8gZmluZCBvdGhlciB3b3JrIHRvIGRpc3BhdGNoLg0KPiArCSAqLw0KPiAr
CWdldF9scHBhY2EoKS0+aWRsZSA9IDE7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9p
ZCBpZGxlX2xvb3BfZXBpbG9nKHVuc2lnbmVkIGxvbmcgaW5fcHVycikNCj4gK3sNCj4gKwlnZXRf
bHBwYWNhKCktPndhaXRfc3RhdGVfY3ljbGVzICs9IG1mc3ByKFNQUk5fUFVSUikgLSBpbl9wdXJy
Ow0KPiArCWdldF9scHBhY2EoKS0+aWRsZSA9IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg
c25vb3plX2xvb3Aoc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsDQo+ICsJCQlzdHJ1Y3QgY3B1
aWRsZV9kcml2ZXIgKmRydiwNCj4gKwkJCWludCBpbmRleCkNCj4gK3sNCj4gKwl1bnNpZ25lZCBs
b25nIGluX3B1cnI7DQo+ICsNCj4gKwlpZGxlX2xvb3BfcHJvbG9nKCZpbl9wdXJyKTsNCj4gKwls
b2NhbF9pcnFfZW5hYmxlKCk7DQoNCnNub296ZV9sb29wIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQg
aW4gY3B1aWRsZSBmcmFtZXdvcmsgdG8gaGFuZGxlIHNub296ZSBzdGF0ZS4NCndoZXJlIGRpc2Fi
bGUgdGhlIGlycT8gV2h5IGRvICJlbmFibGUiIGhlcmU/DQoNCj4gKy8qDQo+ICsgKiBTdGF0ZXMg
Zm9yIGRlZGljYXRlZCBwYXJ0aXRpb24gY2FzZS4NCj4gKyAqLw0KPiArc3RhdGljIHN0cnVjdCBj
cHVpZGxlX3N0YXRlIGRlZGljYXRlZF9zdGF0ZXNbTUFYX0lETEVfU1RBVEVfQ09VTlRdID0gew0K
PiArCXsgLyogU25vb3plICovDQo+ICsJCS5uYW1lID0gInNub296ZSIsDQo+ICsJCS5kZXNjID0g
InNub296ZSIsDQo+ICsJCS5mbGFncyA9IENQVUlETEVfRkxBR19USU1FX1ZBTElELA0KPiArCQku
ZXhpdF9sYXRlbmN5ID0gMCwNCj4gKwkJLnRhcmdldF9yZXNpZGVuY3kgPSAwLA0KPiArCQkuZW50
ZXIgPSAmc25vb3plX2xvb3AgfSwNCj4gKwl7IC8qIENFREUgKi8NCj4gKwkJLm5hbWUgPSAiQ0VE
RSIsDQo+ICsJCS5kZXNjID0gIkNFREUiLA0KPiArCQkuZmxhZ3MgPSBDUFVJRExFX0ZMQUdfVElN
RV9WQUxJRCwNCj4gKwkJLmV4aXRfbGF0ZW5jeSA9IDEwLA0KPiArCQkudGFyZ2V0X3Jlc2lkZW5j
eSA9IDEwMCwNCj4gKwkJLmVudGVyID0gJmRlZGljYXRlZF9jZWRlX2xvb3AgfSwNCj4gK307DQo+
ICsNCj4gKy8qDQo+ICsgKiBTdGF0ZXMgZm9yIHNoYXJlZCBwYXJ0aXRpb24gY2FzZS4NCj4gKyAq
Lw0KPiArc3RhdGljIHN0cnVjdCBjcHVpZGxlX3N0YXRlIHNoYXJlZF9zdGF0ZXNbTUFYX0lETEVf
U1RBVEVfQ09VTlRdID0gew0KPiArCXsgLyogU2hhcmVkIENlZGUgKi8NCj4gKwkJLm5hbWUgPSAi
U2hhcmVkIENlZGUiLA0KPiArCQkuZGVzYyA9ICJTaGFyZWQgQ2VkZSIsDQo+ICsJCS5mbGFncyA9
IENQVUlETEVfRkxBR19USU1FX1ZBTElELA0KPiArCQkuZXhpdF9sYXRlbmN5ID0gMCwNCj4gKwkJ
LnRhcmdldF9yZXNpZGVuY3kgPSAwLA0KPiArCQkuZW50ZXIgPSAmc2hhcmVkX2NlZGVfbG9vcCB9
LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHZvaWQgX19leGl0IHBvd2VyX3Byb2Nlc3Nvcl9pZGxl
X2V4aXQodm9pZCkNCj4gK3sNCj4gKw0KPiArCXVucmVnaXN0ZXJfY3B1X25vdGlmaWVyKCZzZXR1
cF9ob3RwbHVnX25vdGlmaWVyKTsNCg0KUmVtb3ZlIGEgYmxhbmsgbGluZS4NCg0KPiArCWNwdWlk
bGVfdW5yZWdpc3RlcigmcG93ZXJfaWRsZV9kcml2ZXIpOw0KPiArCXJldHVybjsNCj4gK30NCj4g
Kw0KPiArbW9kdWxlX2luaXQocG93ZXJfcHJvY2Vzc29yX2lkbGVfaW5pdCk7DQo+ICttb2R1bGVf
ZXhpdChwb3dlcl9wcm9jZXNzb3JfaWRsZV9leGl0KTsNCj4gKw0KDQpEaWQgeW91IGhhdmUgdGVz
dGVkIHRoZSBtb2R1bGU/IElmIG5vdCB0ZXN0ZWQsIHBsZWFzZSBkb24ndCB1c2UgdGhlIG1vZHVs
ZS4NCg0KPiArTU9EVUxFX0FVVEhPUigiRGVlcHRoaSBEaGFyd2FyIDxkZWVwdGhpQGxpbnV4LnZu
ZXQuaWJtLmNvbT4iKTsNCj4gK01PRFVMRV9ERVNDUklQVElPTigiQ3B1aWRsZSBkcml2ZXIgZm9y
IElCTSBQT1dFUiBwbGF0Zm9ybXMiKTsNCj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gDQoN
Cg==

^ permalink raw reply

* [PATCH 2/2] fs: use inode_set_user to set uid/gid of inode
From: Rui Xiang @ 2013-08-23  2:48 UTC (permalink / raw)
  To: linux-fsdevel, viro
  Cc: linux-s390, linux-ia64, Rui Xiang, linux-rdma, netdev, linux-usb,
	linux-kernel, linux-mm, cgroups, v9fs-developer, linuxppc-dev
In-Reply-To: <1377226118-43756-1-git-send-email-rui.xiang@huawei.com>

Use the new interface to set i_uid/i_gid in inode struct.

Signed-off-by: Rui Xiang <rui.xiang@huawei.com>
---
 arch/ia64/kernel/perfmon.c                |  3 +--
 arch/powerpc/platforms/cell/spufs/inode.c |  3 +--
 arch/s390/hypfs/inode.c                   |  3 +--
 drivers/infiniband/hw/qib/qib_fs.c        |  3 +--
 drivers/usb/gadget/f_fs.c                 |  3 +--
 drivers/usb/gadget/inode.c                |  5 +++--
 fs/9p/vfs_inode.c                         |  6 ++----
 fs/adfs/inode.c                           |  3 +--
 fs/affs/inode.c                           |  6 ++----
 fs/afs/inode.c                            |  6 ++----
 fs/anon_inodes.c                          |  3 +--
 fs/autofs4/inode.c                        |  4 ++--
 fs/befs/linuxvfs.c                        |  8 ++++----
 fs/ceph/caps.c                            |  5 +++--
 fs/ceph/inode.c                           |  8 ++++----
 fs/cifs/inode.c                           |  6 ++----
 fs/configfs/inode.c                       |  3 +--
 fs/debugfs/inode.c                        |  3 +--
 fs/devpts/inode.c                         |  7 +++----
 fs/ext2/ialloc.c                          |  3 +--
 fs/ext3/ialloc.c                          |  3 +--
 fs/ext4/ialloc.c                          |  3 +--
 fs/fat/inode.c                            |  6 ++----
 fs/fuse/control.c                         |  3 +--
 fs/fuse/inode.c                           |  4 ++--
 fs/hfs/inode.c                            |  6 ++----
 fs/hfsplus/inode.c                        |  3 +--
 fs/hpfs/inode.c                           |  3 +--
 fs/hpfs/namei.c                           | 12 ++++--------
 fs/hugetlbfs/inode.c                      |  3 +--
 fs/isofs/inode.c                          |  3 +--
 fs/isofs/rock.c                           |  3 +--
 fs/ncpfs/inode.c                          |  3 +--
 fs/nfs/inode.c                            |  4 ++--
 fs/ntfs/inode.c                           | 12 ++++--------
 fs/ntfs/mft.c                             |  3 +--
 fs/ntfs/super.c                           |  3 +--
 fs/ocfs2/refcounttree.c                   |  3 +--
 fs/omfs/inode.c                           |  3 +--
 fs/pipe.c                                 |  3 +--
 fs/proc/base.c                            | 15 +++++----------
 fs/proc/fd.c                              |  8 ++++----
 fs/proc/inode.c                           |  3 +--
 fs/proc/self.c                            |  3 +--
 fs/stack.c                                |  3 +--
 fs/sysfs/inode.c                          |  3 +--
 fs/xfs/xfs_iops.c                         |  4 ++--
 ipc/mqueue.c                              |  3 +--
 kernel/cgroup.c                           |  3 +--
 mm/shmem.c                                |  3 +--
 net/socket.c                              |  3 +--
 51 files changed, 86 insertions(+), 142 deletions(-)

diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index 5a9ff1c..73e1e55 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -2202,8 +2202,7 @@ pfm_alloc_file(pfm_context_t *ctx)
 	DPRINT(("new inode ino=%ld @%p\n", inode->i_ino, inode));
 
 	inode->i_mode = S_IFCHR|S_IRUGO;
-	inode->i_uid  = current_fsuid();
-	inode->i_gid  = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 
 	/*
 	 * allocate a new dcache entry
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 87ba7cf..4580c9b 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -101,8 +101,7 @@ spufs_new_inode(struct super_block *sb, umode_t mode)
 
 	inode->i_ino = get_next_ino();
 	inode->i_mode = mode;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 out:
 	return inode;
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index 7a539f4..742e430 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -103,8 +103,7 @@ static struct inode *hypfs_make_inode(struct super_block *sb, umode_t mode)
 		struct hypfs_sb_info *hypfs_info = sb->s_fs_info;
 		ret->i_ino = get_next_ino();
 		ret->i_mode = mode;
-		ret->i_uid = hypfs_info->uid;
-		ret->i_gid = hypfs_info->gid;
+		inode_set_user(ret, hypfs_info->uid, hypfs_info->gid);
 		ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME;
 		if (S_ISDIR(mode))
 			set_nlink(ret, 2);
diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c
index f247fc6e..6683837 100644
--- a/drivers/infiniband/hw/qib/qib_fs.c
+++ b/drivers/infiniband/hw/qib/qib_fs.c
@@ -61,13 +61,12 @@ static int qibfs_mknod(struct inode *dir, struct dentry *dentry,
 
 	inode->i_ino = get_next_ino();
 	inode->i_mode = mode;
-	inode->i_uid = GLOBAL_ROOT_UID;
-	inode->i_gid = GLOBAL_ROOT_GID;
 	inode->i_blocks = 0;
 	inode->i_atime = CURRENT_TIME;
 	inode->i_mtime = inode->i_atime;
 	inode->i_ctime = inode->i_atime;
 	inode->i_private = data;
+	inode_set_user(inode, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 	if (S_ISDIR(mode)) {
 		inode->i_op = &simple_dir_inode_operations;
 		inc_nlink(inode);
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
index f394f29..95530f4 100644
--- a/drivers/usb/gadget/f_fs.c
+++ b/drivers/usb/gadget/f_fs.c
@@ -980,8 +980,6 @@ ffs_sb_make_inode(struct super_block *sb, void *data,
 
 		inode->i_ino	 = get_next_ino();
 		inode->i_mode    = perms->mode;
-		inode->i_uid     = perms->uid;
-		inode->i_gid     = perms->gid;
 		inode->i_atime   = current_time;
 		inode->i_mtime   = current_time;
 		inode->i_ctime   = current_time;
@@ -990,6 +988,7 @@ ffs_sb_make_inode(struct super_block *sb, void *data,
 			inode->i_fop = fops;
 		if (iops)
 			inode->i_op  = iops;
+		inode_set_user(inode, perms->uid, perms->gid);
 	}
 
 	return inode;
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
index f255ad7..40eb2b9 100644
--- a/drivers/usb/gadget/inode.c
+++ b/drivers/usb/gadget/inode.c
@@ -1999,12 +1999,13 @@ gadgetfs_make_inode (struct super_block *sb,
 	if (inode) {
 		inode->i_ino = get_next_ino();
 		inode->i_mode = mode;
-		inode->i_uid = make_kuid(&init_user_ns, default_uid);
-		inode->i_gid = make_kgid(&init_user_ns, default_gid);
 		inode->i_atime = inode->i_mtime = inode->i_ctime
 				= CURRENT_TIME;
 		inode->i_private = data;
 		inode->i_fop = fops;
+		inode_set_user(inode,
+				make_kuid(&init_user_ns, default_uid),
+				make_kgid(&init_user_ns, default_gid));
 	}
 	return inode;
 }
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 94de6d1..9578768 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -1170,12 +1170,10 @@ v9fs_stat2inode(struct p9_wstat *stat, struct inode *inode,
 	inode->i_mtime.tv_sec = stat->mtime;
 	inode->i_ctime.tv_sec = stat->mtime;
 
-	inode->i_uid = v9ses->dfltuid;
-	inode->i_gid = v9ses->dfltgid;
+	inode_set_user(inode, v9ses->dfltuid, v9ses->dfltgid);
 
 	if (v9fs_proto_dotu(v9ses)) {
-		inode->i_uid = stat->n_uid;
-		inode->i_gid = stat->n_gid;
+		inode_set_user(inode, stat->n_uid, stat->n_gid);
 	}
 	if ((S_ISREG(inode->i_mode)) || (S_ISDIR(inode->i_mode))) {
 		if (v9fs_proto_dotu(v9ses) && (stat->extension[0] != '\0')) {
diff --git a/fs/adfs/inode.c b/fs/adfs/inode.c
index b9acada..9c9a9ede 100644
--- a/fs/adfs/inode.c
+++ b/fs/adfs/inode.c
@@ -248,8 +248,7 @@ adfs_iget(struct super_block *sb, struct object_info *obj)
 	if (!inode)
 		goto out;
 
-	inode->i_uid	 = ADFS_SB(sb)->s_uid;
-	inode->i_gid	 = ADFS_SB(sb)->s_gid;
+	inode_set_user(inode, ADFS_SB(sb)->s_uid, ADFS_SB(sb)->s_gid);
 	inode->i_ino	 = obj->file_id;
 	inode->i_size	 = obj->size;
 	set_nlink(inode, 2);
diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index 0e092d0..f969757 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -94,8 +94,7 @@ struct inode *affs_iget(struct super_block *sb, unsigned long ino)
 
 	switch (be32_to_cpu(tail->stype)) {
 	case ST_ROOT:
-		inode->i_uid = sbi->s_uid;
-		inode->i_gid = sbi->s_gid;
+		inode_set_user(inode, sbi->s_uid, sbi->s_gid);
 		/* fall through */
 	case ST_USERDIR:
 		if (be32_to_cpu(tail->stype) == ST_USERDIR ||
@@ -304,8 +303,7 @@ affs_new_inode(struct inode *dir)
 	mark_buffer_dirty_inode(bh, inode);
 	affs_brelse(bh);
 
-	inode->i_uid     = current_fsuid();
-	inode->i_gid     = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	inode->i_ino     = block;
 	set_nlink(inode, 1);
 	inode->i_mtime   = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC;
diff --git a/fs/afs/inode.c b/fs/afs/inode.c
index 789bc25..b27656a 100644
--- a/fs/afs/inode.c
+++ b/fs/afs/inode.c
@@ -68,8 +68,7 @@ static int afs_inode_map_status(struct afs_vnode *vnode, struct key *key)
 #endif
 
 	set_nlink(inode, vnode->status.nlink);
-	inode->i_uid		= vnode->status.owner;
-	inode->i_gid		= GLOBAL_ROOT_GID;
+	inode_set_user(inode, vnode->status.owner, GLOBAL_ROOT_GID);
 	inode->i_size		= vnode->status.size;
 	inode->i_ctime.tv_sec	= vnode->status.mtime_server;
 	inode->i_ctime.tv_nsec	= 0;
@@ -175,8 +174,7 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name,
 	inode->i_mode		= S_IFDIR | S_IRUGO | S_IXUGO;
 	inode->i_op		= &afs_autocell_inode_operations;
 	set_nlink(inode, 2);
-	inode->i_uid		= GLOBAL_ROOT_UID;
-	inode->i_gid		= GLOBAL_ROOT_GID;
+	inode_set_user(inode, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 	inode->i_ctime.tv_sec	= get_seconds();
 	inode->i_ctime.tv_nsec	= 0;
 	inode->i_atime		= inode->i_mtime = inode->i_ctime;
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c
index 85c9618..16f78ac 100644
--- a/fs/anon_inodes.c
+++ b/fs/anon_inodes.c
@@ -77,10 +77,9 @@ static struct inode *anon_inode_mkinode(struct super_block *s)
 	 */
 	inode->i_state = I_DIRTY;
 	inode->i_mode = S_IRUSR | S_IWUSR;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
 	inode->i_flags |= S_PRIVATE;
 	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	return inode;
 }
 
diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
index 1b045ec..8e6e2ea 100644
--- a/fs/autofs4/inode.c
+++ b/fs/autofs4/inode.c
@@ -353,8 +353,8 @@ struct inode *autofs4_get_inode(struct super_block *sb, umode_t mode)
 
 	inode->i_mode = mode;
 	if (sb->s_root) {
-		inode->i_uid = sb->s_root->d_inode->i_uid;
-		inode->i_gid = sb->s_root->d_inode->i_gid;
+		inode_set_user(inode, sb->s_root->d_inode->i_uid,
+					sb->s_root->d_inode->i_gid);
 	}
 	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 	inode->i_ino = get_next_ino();
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index e9c75e2..40dbd80 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -356,12 +356,12 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino)
 	 * you can change by "uid" or "gid" options.
 	 */   
 
-	inode->i_uid = befs_sb->mount_opts.use_uid ?
+	inode_set_user(inode, befs_sb->mount_opts.use_uid ?
 		befs_sb->mount_opts.uid :
-		make_kuid(&init_user_ns, fs32_to_cpu(sb, raw_inode->uid));
-	inode->i_gid = befs_sb->mount_opts.use_gid ?
+		make_kuid(&init_user_ns, fs32_to_cpu(sb, raw_inode->uid)),
+		befs_sb->mount_opts.use_gid ?
 		befs_sb->mount_opts.gid :
-		make_kgid(&init_user_ns, fs32_to_cpu(sb, raw_inode->gid));
+		make_kgid(&init_user_ns, fs32_to_cpu(sb, raw_inode->gid)));
 
 	set_nlink(inode, 1);
 
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 430121a..d548f22 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -2433,8 +2433,9 @@ static void handle_cap_grant(struct inode *inode, struct ceph_mds_caps *grant,
 
 	if ((issued & CEPH_CAP_AUTH_EXCL) == 0) {
 		inode->i_mode = le32_to_cpu(grant->mode);
-		inode->i_uid = make_kuid(&init_user_ns, le32_to_cpu(grant->uid));
-		inode->i_gid = make_kgid(&init_user_ns, le32_to_cpu(grant->gid));
+		inode_set_user(inode,
+			make_kuid(&init_user_ns, le32_to_cpu(grant->uid)),
+			make_kgid(&init_user_ns, le32_to_cpu(grant->gid)));
 		dout("%p mode 0%o uid.gid %d.%d\n", inode, inode->i_mode,
 		     from_kuid(&init_user_ns, inode->i_uid),
 		     from_kgid(&init_user_ns, inode->i_gid));
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index 98b6e50..b3979e7 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -85,12 +85,11 @@ struct inode *ceph_get_snapdir(struct inode *parent)
 	if (IS_ERR(inode))
 		return inode;
 	inode->i_mode = parent->i_mode;
-	inode->i_uid = parent->i_uid;
-	inode->i_gid = parent->i_gid;
 	inode->i_op = &ceph_dir_iops;
 	inode->i_fop = &ceph_dir_fops;
 	ci->i_snap_caps = CEPH_CAP_PIN; /* so we can open */
 	ci->i_rbytes = 0;
+	inode_set_user(inode, parent->i_uid, parent->i_gid);
 	return inode;
 }
 
@@ -619,8 +618,9 @@ static int fill_inode(struct inode *inode,
 
 	if ((issued & CEPH_CAP_AUTH_EXCL) == 0) {
 		inode->i_mode = le32_to_cpu(info->mode);
-		inode->i_uid = make_kuid(&init_user_ns, le32_to_cpu(info->uid));
-		inode->i_gid = make_kgid(&init_user_ns, le32_to_cpu(info->gid));
+		inode_set_user(inode,
+			make_kuid(&init_user_ns, le32_to_cpu(info->uid)),
+			make_kgid(&init_user_ns, le32_to_cpu(info->gid)));
 		dout("%p mode 0%o uid.gid %d.%d\n", inode, inode->i_mode,
 		     from_kuid(&init_user_ns, inode->i_uid),
 		     from_kgid(&init_user_ns, inode->i_gid));
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 90ef287..70eef44 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -135,8 +135,7 @@ cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr)
 	inode->i_ctime = fattr->cf_ctime;
 	inode->i_rdev = fattr->cf_rdev;
 	set_nlink(inode, fattr->cf_nlink);
-	inode->i_uid = fattr->cf_uid;
-	inode->i_gid = fattr->cf_gid;
+	inode_set_user(inode, fattr->cf_uid, fattr->cf_gid);
 
 	/* if dynperm is set, don't clobber existing mode */
 	if (inode->i_state & I_NEW ||
@@ -918,8 +917,7 @@ struct inode *cifs_root_iget(struct super_block *sb)
 		set_nlink(inode, 2);
 		inode->i_op = &cifs_ipc_inode_ops;
 		inode->i_fop = &simple_dir_operations;
-		inode->i_uid = cifs_sb->mnt_uid;
-		inode->i_gid = cifs_sb->mnt_gid;
+		inode_set_user(inode, cifs_sb->mnt_uid, cifs_sb->mnt_gid);
 		spin_unlock(&inode->i_lock);
 	} else if (rc) {
 		iget_failed(inode);
diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c
index a9d35b0..c9dc07a 100644
--- a/fs/configfs/inode.c
+++ b/fs/configfs/inode.c
@@ -123,11 +123,10 @@ static inline void set_default_inode_attr(struct inode * inode, umode_t mode)
 static inline void set_inode_attr(struct inode * inode, struct iattr * iattr)
 {
 	inode->i_mode = iattr->ia_mode;
-	inode->i_uid = iattr->ia_uid;
-	inode->i_gid = iattr->ia_gid;
 	inode->i_atime = iattr->ia_atime;
 	inode->i_mtime = iattr->ia_mtime;
 	inode->i_ctime = iattr->ia_ctime;
+	inode_set_user(inode, iattr->ia_uid, iattr->ia_gid);
 }
 
 struct inode *configfs_new_inode(umode_t mode, struct configfs_dirent *sd,
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index c7c83ff..f7f3687 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -207,8 +207,7 @@ static int debugfs_apply_options(struct super_block *sb)
 	inode->i_mode &= ~S_IALLUGO;
 	inode->i_mode |= opts->mode;
 
-	inode->i_uid = opts->uid;
-	inode->i_gid = opts->gid;
+	inode_set_user(inode, opts->uid, opts->gid);
 
 	return 0;
 }
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 073d30b..a4d8c7a 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -280,8 +280,7 @@ static int mknod_ptmx(struct super_block *sb)
 
 	mode = S_IFCHR|opts->ptmxmode;
 	init_special_inode(inode, mode, MKDEV(TTYAUX_MAJOR, 2));
-	inode->i_uid = root_uid;
-	inode->i_gid = root_gid;
+	inode_set_user(inode, root_uid, root_gid);
 
 	d_add(dentry, inode);
 
@@ -588,8 +587,8 @@ struct inode *devpts_pty_new(struct inode *ptmx_inode, dev_t device, int index,
 		return ERR_PTR(-ENOMEM);
 
 	inode->i_ino = index + 3;
-	inode->i_uid = opts->setuid ? opts->uid : current_fsuid();
-	inode->i_gid = opts->setgid ? opts->gid : current_fsgid();
+	inode_set_user(inode, opts->setuid ? opts->uid : current_fsuid(),
+				opts->setgid ? opts->gid : current_fsgid());
 	inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
 	init_special_inode(inode, S_IFCHR|opts->mode, device);
 	inode->i_private = priv;
diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
index 7cadd82..ccb6678 100644
--- a/fs/ext2/ialloc.c
+++ b/fs/ext2/ialloc.c
@@ -544,8 +544,7 @@ got:
 	mark_buffer_dirty(bh2);
 	if (test_opt(sb, GRPID)) {
 		inode->i_mode = mode;
-		inode->i_uid = current_fsuid();
-		inode->i_gid = dir->i_gid;
+		inode_set_user(inode, current_fsuid(), dir->i_gid);
 	} else
 		inode_init_owner(inode, dir, mode);
 
diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
index 082afd7..b858f92 100644
--- a/fs/ext3/ialloc.c
+++ b/fs/ext3/ialloc.c
@@ -467,8 +467,7 @@ got:
 
 	if (test_opt(sb, GRPID)) {
 		inode->i_mode = mode;
-		inode->i_uid = current_fsuid();
-		inode->i_gid = dir->i_gid;
+		inode_set_user(inode, current_fsuid(), dir->i_gid);
 	} else
 		inode_init_owner(inode, dir, mode);
 
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index 666a5ed..6644ceb 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -722,8 +722,7 @@ struct inode *__ext4_new_inode(handle_t *handle, struct inode *dir,
 		i_gid_write(inode, owner[1]);
 	} else if (test_opt(sb, GRPID)) {
 		inode->i_mode = mode;
-		inode->i_uid = current_fsuid();
-		inode->i_gid = dir->i_gid;
+		inode_set_user(inode, current_fsuid(), dir->i_gid);
 	} else
 		inode_init_owner(inode, dir, mode);
 	dquot_initialize(inode);
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 7152c07..92d2b4f 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -443,8 +443,7 @@ int fat_fill_inode(struct inode *inode, struct msdos_dir_entry *de)
 	int error;
 
 	MSDOS_I(inode)->i_pos = 0;
-	inode->i_uid = sbi->options.fs_uid;
-	inode->i_gid = sbi->options.fs_gid;
+	inode_set_user(inode, sbi->options.fs_uid, sbi->options.fs_gid);
 	inode->i_version++;
 	inode->i_generation = get_seconds();
 
@@ -1252,8 +1251,7 @@ static int fat_read_root(struct inode *inode)
 	int error;
 
 	MSDOS_I(inode)->i_pos = MSDOS_ROOT_INO;
-	inode->i_uid = sbi->options.fs_uid;
-	inode->i_gid = sbi->options.fs_gid;
+	inode_set_user(inode, sbi->options.fs_uid, sbi->options.fs_gid);
 	inode->i_version++;
 	inode->i_generation = 0;
 	inode->i_mode = fat_make_mode(sbi, ATTR_DIR, S_IRWXUGO);
diff --git a/fs/fuse/control.c b/fs/fuse/control.c
index a0b0855..117d6ae 100644
--- a/fs/fuse/control.c
+++ b/fs/fuse/control.c
@@ -218,8 +218,7 @@ static struct dentry *fuse_ctl_add_dentry(struct dentry *parent,
 
 	inode->i_ino = get_next_ino();
 	inode->i_mode = mode;
-	inode->i_uid = fc->user_id;
-	inode->i_gid = fc->group_id;
+	inode_set_user(inode, fc->user_id, fc->group_id);
 	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 	/* setting ->i_op to NULL is not allowed */
 	if (iop)
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index a24e2a7..3a76cf1 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -165,8 +165,8 @@ void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
 	inode->i_ino     = fuse_squash_ino(attr->ino);
 	inode->i_mode    = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
 	set_nlink(inode, attr->nlink);
-	inode->i_uid     = make_kuid(&init_user_ns, attr->uid);
-	inode->i_gid     = make_kgid(&init_user_ns, attr->gid);
+	inode_set_user(inode, make_kuid(&init_user_ns, attr->uid),
+				make_kgid(&init_user_ns, attr->gid));
 	inode->i_blocks  = attr->blocks;
 	inode->i_atime.tv_sec   = attr->atime;
 	inode->i_atime.tv_nsec  = attr->atimensec;
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 3fe7b8e..b6de5ff 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -189,8 +189,7 @@ struct inode *hfs_new_inode(struct inode *dir, struct qstr *name, umode_t mode)
 	hfs_cat_build_key(sb, (btree_key *)&HFS_I(inode)->cat_key, dir->i_ino, name);
 	inode->i_ino = HFS_SB(sb)->next_id++;
 	inode->i_mode = mode;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	set_nlink(inode, 1);
 	inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC;
 	HFS_I(inode)->flags = 0;
@@ -319,8 +318,7 @@ static int hfs_read_inode(struct inode *inode, void *data)
 	INIT_LIST_HEAD(&HFS_I(inode)->open_dir_list);
 
 	/* Initialize the inode */
-	inode->i_uid = hsb->s_uid;
-	inode->i_gid = hsb->s_gid;
+	inode_set_user(inode, hsb->s_uid, hsb->s_gid);
 	set_nlink(inode, 1);
 
 	if (idata->key)
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
index 96d7a2c..75a9e57 100644
--- a/fs/hfsplus/inode.c
+++ b/fs/hfsplus/inode.c
@@ -421,8 +421,7 @@ struct inode *hfsplus_new_inode(struct super_block *sb, umode_t mode)
 
 	inode->i_ino = sbi->next_cnid++;
 	inode->i_mode = mode;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	set_nlink(inode, 1);
 	inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC;
 
diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c
index 9edeeb0..d16d8eb 100644
--- a/fs/hpfs/inode.c
+++ b/fs/hpfs/inode.c
@@ -15,8 +15,7 @@ void hpfs_init_inode(struct inode *i)
 	struct super_block *sb = i->i_sb;
 	struct hpfs_inode_info *hpfs_inode = hpfs_i(i);
 
-	i->i_uid = hpfs_sb(sb)->sb_uid;
-	i->i_gid = hpfs_sb(sb)->sb_gid;
+	inode_set_user(i, hpfs_sb(sb)->sb_uid, hpfs_sb(sb)->sb_gid);
 	i->i_mode = hpfs_sb(sb)->sb_mode;
 	i->i_size = -1;
 	i->i_blocks = -1;
diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c
index 345713d..c5def10 100644
--- a/fs/hpfs/namei.c
+++ b/fs/hpfs/namei.c
@@ -94,8 +94,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
 	if (!uid_eq(result->i_uid, current_fsuid()) ||
 	    !gid_eq(result->i_gid, current_fsgid()) ||
 	    result->i_mode != (mode | S_IFDIR)) {
-		result->i_uid = current_fsuid();
-		result->i_gid = current_fsgid();
+		inode_set_user(result, current_fsuid(), current_fsgid());
 		result->i_mode = mode | S_IFDIR;
 		hpfs_write_inode_nolock(result);
 	}
@@ -182,8 +181,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, b
 	if (!uid_eq(result->i_uid, current_fsuid()) ||
 	    !gid_eq(result->i_gid, current_fsgid()) ||
 	    result->i_mode != (mode | S_IFREG)) {
-		result->i_uid = current_fsuid();
-		result->i_gid = current_fsgid();
+		inode_set_user(result, current_fsuid(), current_fsgid());
 		result->i_mode = mode | S_IFREG;
 		hpfs_write_inode_nolock(result);
 	}
@@ -240,8 +238,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, de
 	result->i_mtime.tv_nsec = 0;
 	result->i_atime.tv_nsec = 0;
 	hpfs_i(result)->i_ea_size = 0;
-	result->i_uid = current_fsuid();
-	result->i_gid = current_fsgid();
+	inode_set_user(result, current_fsuid(), current_fsgid());
 	set_nlink(result, 1);
 	result->i_size = 0;
 	result->i_blocks = 1;
@@ -315,8 +312,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
 	result->i_atime.tv_nsec = 0;
 	hpfs_i(result)->i_ea_size = 0;
 	result->i_mode = S_IFLNK | 0777;
-	result->i_uid = current_fsuid();
-	result->i_gid = current_fsgid();
+	inode_set_user(result, current_fsuid(), current_fsgid());
 	result->i_blocks = 1;
 	set_nlink(result, 1);
 	result->i_size = strlen(symlink);
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 3442397..603d597 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -449,8 +449,7 @@ static struct inode *hugetlbfs_get_root(struct super_block *sb,
 		struct hugetlbfs_inode_info *info;
 		inode->i_ino = get_next_ino();
 		inode->i_mode = S_IFDIR | config->mode;
-		inode->i_uid = config->uid;
-		inode->i_gid = config->gid;
+		inode_set_user(inode, config->uid, config->gid);
 		inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 		info = HUGETLBFS_I(inode);
 		mpol_shared_policy_init(&info->policy, NULL);
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index e5d408a..3d26462 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -1333,8 +1333,7 @@ static int isofs_read_inode(struct inode *inode)
 		}
 		set_nlink(inode, 1);
 	}
-	inode->i_uid = sbi->s_uid;
-	inode->i_gid = sbi->s_gid;
+	inode_set_user(inode, sbi->s_uid, sbi->s_gid);
 	inode->i_blocks = 0;
 
 	ei->i_format_parm[0] = 0;
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
index c0bf424..4490509 100644
--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -497,8 +497,7 @@ repeat:
 			}
 			inode->i_mode = reloc->i_mode;
 			set_nlink(inode, reloc->i_nlink);
-			inode->i_uid = reloc->i_uid;
-			inode->i_gid = reloc->i_gid;
+			inode_set_user(inode, reloc->i_uid, reloc->i_gid);
 			inode->i_rdev = reloc->i_rdev;
 			inode->i_size = reloc->i_size;
 			inode->i_blocks = reloc->i_blocks;
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index 4659da6..52aea43 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -232,8 +232,7 @@ static void ncp_set_attr(struct inode *inode, struct ncp_entry_info *nwinfo)
 	DDPRINTK("ncp_read_inode: inode->i_mode = %u\n", inode->i_mode);
 
 	set_nlink(inode, 1);
-	inode->i_uid = server->m.uid;
-	inode->i_gid = server->m.gid;
+	inode_set_user(inode, server->m.uid, server->m.gid);
 
 	ncp_update_dates(inode, &nwinfo->i);
 	ncp_update_inode(inode, nwinfo);
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 42a584a..863799b 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -401,8 +401,8 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr, st
 		inode->i_version = 0;
 		inode->i_size = 0;
 		clear_nlink(inode);
-		inode->i_uid = make_kuid(&init_user_ns, -2);
-		inode->i_gid = make_kgid(&init_user_ns, -2);
+		inode_set_user(inode, make_kuid(&init_user_ns, -2),
+					make_kgid(&init_user_ns, -2));
 		inode->i_blocks = 0;
 		memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
 		nfsi->write_io = 0;
diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
index 2778b02..61aa5a7 100644
--- a/fs/ntfs/inode.c
+++ b/fs/ntfs/inode.c
@@ -568,8 +568,7 @@ static int ntfs_read_locked_inode(struct inode *vi)
 	 */
 	vi->i_version = 1;
 
-	vi->i_uid = vol->uid;
-	vi->i_gid = vol->gid;
+	inode_set_user(vi, vol->uid, vol->gid);
 	vi->i_mode = 0;
 
 	/*
@@ -1240,8 +1239,7 @@ static int ntfs_read_locked_attr_inode(struct inode *base_vi, struct inode *vi)
 
 	/* Just mirror the values from the base inode. */
 	vi->i_version	= base_vi->i_version;
-	vi->i_uid	= base_vi->i_uid;
-	vi->i_gid	= base_vi->i_gid;
+	inode_set_user(vi, base_vi->i_uid, base_vi->i_gid);
 	set_nlink(vi, base_vi->i_nlink);
 	vi->i_mtime	= base_vi->i_mtime;
 	vi->i_ctime	= base_vi->i_ctime;
@@ -1506,8 +1504,7 @@ static int ntfs_read_locked_index_inode(struct inode *base_vi, struct inode *vi)
 	base_ni = NTFS_I(base_vi);
 	/* Just mirror the values from the base inode. */
 	vi->i_version	= base_vi->i_version;
-	vi->i_uid	= base_vi->i_uid;
-	vi->i_gid	= base_vi->i_gid;
+	inode_set_user(vi, base_vi->i_uid, base_vi->i_gid);
 	set_nlink(vi, base_vi->i_nlink);
 	vi->i_mtime	= base_vi->i_mtime;
 	vi->i_ctime	= base_vi->i_ctime;
@@ -2125,8 +2122,7 @@ int ntfs_read_inode_mount(struct inode *vi)
 			 * ntfs_read_inode() will have set up the default ones.
 			 */
 			/* Set uid and gid to root. */
-			vi->i_uid = GLOBAL_ROOT_UID;
-			vi->i_gid = GLOBAL_ROOT_GID;
+			inode_set_user(vi, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 			/* Regular file. No access for anyone. */
 			vi->i_mode = S_IFREG;
 			/* No VFS initiated operations allowed for $MFT. */
diff --git a/fs/ntfs/mft.c b/fs/ntfs/mft.c
index 3014a36..d808a21 100644
--- a/fs/ntfs/mft.c
+++ b/fs/ntfs/mft.c
@@ -2648,8 +2648,7 @@ mft_rec_already_initialized:
 		vi->i_version = 1;
 
 		/* The owner and group come from the ntfs volume. */
-		vi->i_uid = vol->uid;
-		vi->i_gid = vol->gid;
+		inode_set_user(vi, vol->uid, vol->gid);
 
 		/* Initialize the ntfs specific part of @vi. */
 		ntfs_init_big_inode(vi);
diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
index 82650d5..09a2e72 100644
--- a/fs/ntfs/super.c
+++ b/fs/ntfs/super.c
@@ -1047,8 +1047,7 @@ static bool load_and_init_mft_mirror(ntfs_volume *vol)
 	 * ntfs_read_inode() will have set up the default ones.
 	 */
 	/* Set uid and gid to root. */
-	tmp_ino->i_uid = GLOBAL_ROOT_UID;
-	tmp_ino->i_gid = GLOBAL_ROOT_GID;
+	inode_set_user(tmp_ino, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 	/* Regular file.  No access for anyone. */
 	tmp_ino->i_mode = S_IFREG;
 	/* No VFS initiated operations allowed for $MFTMirr. */
diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
index bf4dfc1..84f4859 100644
--- a/fs/ocfs2/refcounttree.c
+++ b/fs/ocfs2/refcounttree.c
@@ -4100,8 +4100,7 @@ static int ocfs2_complete_reflink(struct inode *s_inode,
 	di->i_attr = s_di->i_attr;
 
 	if (preserve) {
-		t_inode->i_uid = s_inode->i_uid;
-		t_inode->i_gid = s_inode->i_gid;
+		inode_set_user(t_inode, s_inode->i_uid, s_inode->i_gid);
 		t_inode->i_mode = s_inode->i_mode;
 		di->i_uid = s_di->i_uid;
 		di->i_gid = s_di->i_gid;
diff --git a/fs/omfs/inode.c b/fs/omfs/inode.c
index d8b0afd..f4a252e 100644
--- a/fs/omfs/inode.c
+++ b/fs/omfs/inode.c
@@ -222,8 +222,7 @@ struct inode *omfs_iget(struct super_block *sb, ino_t ino)
 	if (ino != be64_to_cpu(oi->i_head.h_self))
 		goto fail_bh;
 
-	inode->i_uid = sbi->s_uid;
-	inode->i_gid = sbi->s_gid;
+	inode_set_user(inode, sbi->s_uid, sbi->s_gid);
 
 	ctime = be64_to_cpu(oi->i_ctime);
 	nsecs = do_div(ctime, 1000) * 1000L;
diff --git a/fs/pipe.c b/fs/pipe.c
index d2c45e1..6df8161 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -853,8 +853,7 @@ static struct inode * get_pipe_inode(void)
 	 */
 	inode->i_state = I_DIRTY;
 	inode->i_mode = S_IFIFO | S_IRUSR | S_IWUSR;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 
 	return inode;
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 1485e38..cd9e41e 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1555,8 +1555,7 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t
 	if (task_dumpable(task)) {
 		rcu_read_lock();
 		cred = __task_cred(task);
-		inode->i_uid = cred->euid;
-		inode->i_gid = cred->egid;
+		inode_set_user(inode, cred->euid, cred->egid);
 		rcu_read_unlock();
 	}
 	security_task_to_inode(task, inode);
@@ -1636,12 +1635,10 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags)
 		    task_dumpable(task)) {
 			rcu_read_lock();
 			cred = __task_cred(task);
-			inode->i_uid = cred->euid;
-			inode->i_gid = cred->egid;
+			inode_set_user(inode, cred->euid, cred->egid);
 			rcu_read_unlock();
 		} else {
-			inode->i_uid = GLOBAL_ROOT_UID;
-			inode->i_gid = GLOBAL_ROOT_GID;
+			inode_set_user(inode, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 		}
 		inode->i_mode &= ~(S_ISUID | S_ISGID);
 		security_task_to_inode(task, inode);
@@ -1765,12 +1762,10 @@ static int map_files_d_revalidate(struct dentry *dentry, unsigned int flags)
 		if (task_dumpable(task)) {
 			rcu_read_lock();
 			cred = __task_cred(task);
-			inode->i_uid = cred->euid;
-			inode->i_gid = cred->egid;
+			inode_set_user(inode, cred->euid, cred->egid);
 			rcu_read_unlock();
 		} else {
-			inode->i_uid = GLOBAL_ROOT_UID;
-			inode->i_gid = GLOBAL_ROOT_GID;
+			inode_set_user(inode, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID)
 		}
 		security_task_to_inode(task, inode);
 		status = 1;
diff --git a/fs/proc/fd.c b/fs/proc/fd.c
index 0ff80f9..f62cb78 100644
--- a/fs/proc/fd.c
+++ b/fs/proc/fd.c
@@ -101,12 +101,12 @@ static int tid_fd_revalidate(struct dentry *dentry, unsigned int flags)
 				if (task_dumpable(task)) {
 					rcu_read_lock();
 					cred = __task_cred(task);
-					inode->i_uid = cred->euid;
-					inode->i_gid = cred->egid;
+					inode_set_user(inode,
+						cred->euid, cred->egid);
 					rcu_read_unlock();
 				} else {
-					inode->i_uid = GLOBAL_ROOT_UID;
-					inode->i_gid = GLOBAL_ROOT_GID;
+					inode_set_user(inode,
+					GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 				}
 
 				if (S_ISLNK(inode->i_mode)) {
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index 073aea6..74e42bc 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -384,8 +384,7 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)
 
 		if (de->mode) {
 			inode->i_mode = de->mode;
-			inode->i_uid = de->uid;
-			inode->i_gid = de->gid;
+			inode_set_user(inode, de->uid, de->gid);
 		}
 		if (de->size)
 			inode->i_size = de->size;
diff --git a/fs/proc/self.c b/fs/proc/self.c
index 6b6a993..679f29d 100644
--- a/fs/proc/self.c
+++ b/fs/proc/self.c
@@ -66,9 +66,8 @@ int proc_setup_self(struct super_block *s)
 			inode->i_ino = self_inum;
 			inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
 			inode->i_mode = S_IFLNK | S_IRWXUGO;
-			inode->i_uid = GLOBAL_ROOT_UID;
-			inode->i_gid = GLOBAL_ROOT_GID;
 			inode->i_op = &proc_self_inode_operations;
+			inode_set_user(inode, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID);
 			d_add(self, inode);
 		} else {
 			dput(self);
diff --git a/fs/stack.c b/fs/stack.c
index 5b53882..b147803 100644
--- a/fs/stack.c
+++ b/fs/stack.c
@@ -63,14 +63,13 @@ EXPORT_SYMBOL_GPL(fsstack_copy_inode_size);
 void fsstack_copy_attr_all(struct inode *dest, const struct inode *src)
 {
 	dest->i_mode = src->i_mode;
-	dest->i_uid = src->i_uid;
-	dest->i_gid = src->i_gid;
 	dest->i_rdev = src->i_rdev;
 	dest->i_atime = src->i_atime;
 	dest->i_mtime = src->i_mtime;
 	dest->i_ctime = src->i_ctime;
 	dest->i_blkbits = src->i_blkbits;
 	dest->i_flags = src->i_flags;
+	inode_set_user(dest, src->i_uid, src->i_gid);
 	set_nlink(dest, src->i_nlink);
 }
 EXPORT_SYMBOL_GPL(fsstack_copy_attr_all);
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
index 3e2837a..87b06f7 100644
--- a/fs/sysfs/inode.c
+++ b/fs/sysfs/inode.c
@@ -194,11 +194,10 @@ static inline void set_default_inode_attr(struct inode * inode, umode_t mode)
 
 static inline void set_inode_attr(struct inode * inode, struct iattr * iattr)
 {
-	inode->i_uid = iattr->ia_uid;
-	inode->i_gid = iattr->ia_gid;
 	inode->i_atime = iattr->ia_atime;
 	inode->i_mtime = iattr->ia_mtime;
 	inode->i_ctime = iattr->ia_ctime;
+	inode_set_user(inode, iattr->ia_uid, iattr->ia_gid);
 }
 
 static void sysfs_refresh_inode(struct sysfs_dirent *sd, struct inode *inode)
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 6d7e9e2..6d91cfa 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -1174,8 +1174,8 @@ xfs_setup_inode(
 
 	inode->i_mode	= ip->i_d.di_mode;
 	set_nlink(inode, ip->i_d.di_nlink);
-	inode->i_uid    = xfs_uid_to_kuid(ip->i_d.di_uid);
-	inode->i_gid    = xfs_gid_to_kgid(ip->i_d.di_gid);
+	inode_set_user(inode, xfs_uid_to_kuid(ip->i_d.di_uid),
+				xfs_gid_to_kgid(ip->i_d.di_gid));
 
 	switch (inode->i_mode & S_IFMT) {
 	case S_IFBLK:
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index ae1996d..cc7fb87 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -227,8 +227,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
 
 	inode->i_ino = get_next_ino();
 	inode->i_mode = mode;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	inode->i_mtime = inode->i_ctime = inode->i_atime = CURRENT_TIME;
 
 	if (S_ISREG(mode)) {
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 7b35ff9..14671ca 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -846,8 +846,7 @@ static struct inode *cgroup_new_inode(umode_t mode, struct super_block *sb)
 	if (inode) {
 		inode->i_ino = get_next_ino();
 		inode->i_mode = mode;
-		inode->i_uid = current_fsuid();
-		inode->i_gid = current_fsgid();
+		inode_set_user(inode, current_fsuid(), current_fsgid());
 		inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 		inode->i_mapping->backing_dev_info = &cgroup_backing_dev_info;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index f00c1c1..d554ac4f 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2628,8 +2628,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
 	inode = shmem_get_inode(sb, NULL, S_IFDIR | sbinfo->mode, 0, VM_NORESERVE);
 	if (!inode)
 		goto failed;
-	inode->i_uid = sbinfo->uid;
-	inode->i_gid = sbinfo->gid;
+	inode_set_user(inode, sbinfo->uid, sbinfo->gid);
 	sb->s_root = d_make_root(inode);
 	if (!sb->s_root)
 		goto failed;
diff --git a/net/socket.c b/net/socket.c
index ebed4b6..6c711a5 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -547,8 +547,7 @@ static struct socket *sock_alloc(void)
 	kmemcheck_annotate_bitfield(sock, type);
 	inode->i_ino = get_next_ino();
 	inode->i_mode = S_IFSOCK | S_IRWXUGO;
-	inode->i_uid = current_fsuid();
-	inode->i_gid = current_fsgid();
+	inode_set_user(inode, current_fsuid(), current_fsgid());
 	inode->i_op = &sockfs_inode_ops;
 
 	this_cpu_add(sockets_in_use, 1);
-- 
1.8.2.2

^ permalink raw reply related

* [PATCH 1/2] fs: implement inode uid/gid setting function
From: Rui Xiang @ 2013-08-23  2:48 UTC (permalink / raw)
  To: linux-fsdevel, viro
  Cc: linux-s390, linux-ia64, Rui Xiang, linux-rdma, netdev, linux-usb,
	linux-kernel, linux-mm, cgroups, v9fs-developer, linuxppc-dev
In-Reply-To: <1377226118-43756-1-git-send-email-rui.xiang@huawei.com>

Supply a interface inode_set_user  to set uid/gid of inode
structs.

Signed-off-by: Rui Xiang <rui.xiang@huawei.com>
---
 fs/inode.c         | 7 +++++++
 include/linux/fs.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/fs/inode.c b/fs/inode.c
index e315c0a..3f90499 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -343,6 +343,13 @@ void inc_nlink(struct inode *inode)
 }
 EXPORT_SYMBOL(inc_nlink);
 
+void inode_set_user(struct inode *inode, kuid_t uid, kgid_t gid)
+{
+	inode->i_uid = uid;
+	inode->i_gid = gid;
+}
+EXPORT_SYMBOL(inode_set_user);
+
 void address_space_init_once(struct address_space *mapping)
 {
 	memset(mapping, 0, sizeof(*mapping));
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 729e81b..36ac51b 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2619,6 +2619,7 @@ void __inode_sub_bytes(struct inode *inode, loff_t bytes);
 void inode_sub_bytes(struct inode *inode, loff_t bytes);
 loff_t inode_get_bytes(struct inode *inode);
 void inode_set_bytes(struct inode *inode, loff_t bytes);
+void inode_set_user(struct inode *inode, kuid_t uid, kgid_t gid);
 
 extern int vfs_readdir(struct file *, filldir_t, void *);
 extern int iterate_dir(struct file *, struct dir_context *);
-- 
1.8.2.2

^ permalink raw reply related

* [PATCH 0/2] fs: supply inode uid/gid setting interface
From: Rui Xiang @ 2013-08-23  2:48 UTC (permalink / raw)
  To: linux-fsdevel, viro
  Cc: linux-s390, linux-ia64, Rui Xiang, linux-rdma, netdev, linux-usb,
	linux-kernel, linux-mm, cgroups, v9fs-developer, linuxppc-dev

This patchset implements an accessor functions to set uid/gid
in inode struct. Just finish code clean up.

Rui Xiang (2):
  fs: implement inode uid/gid setting function
  fs: use inode_set_user to set uid/gid of inode

 arch/ia64/kernel/perfmon.c                |  3 +--
 arch/powerpc/platforms/cell/spufs/inode.c |  3 +--
 arch/s390/hypfs/inode.c                   |  3 +--
 drivers/infiniband/hw/qib/qib_fs.c        |  3 +--
 drivers/usb/gadget/f_fs.c                 |  3 +--
 drivers/usb/gadget/inode.c                |  5 +++--
 fs/9p/vfs_inode.c                         |  6 ++----
 fs/adfs/inode.c                           |  3 +--
 fs/affs/inode.c                           |  6 ++----
 fs/afs/inode.c                            |  6 ++----
 fs/anon_inodes.c                          |  3 +--
 fs/autofs4/inode.c                        |  4 ++--
 fs/befs/linuxvfs.c                        |  8 ++++----
 fs/ceph/caps.c                            |  5 +++--
 fs/ceph/inode.c                           |  8 ++++----
 fs/cifs/inode.c                           |  6 ++----
 fs/configfs/inode.c                       |  3 +--
 fs/debugfs/inode.c                        |  3 +--
 fs/devpts/inode.c                         |  7 +++----
 fs/ext2/ialloc.c                          |  3 +--
 fs/ext3/ialloc.c                          |  3 +--
 fs/ext4/ialloc.c                          |  3 +--
 fs/fat/inode.c                            |  6 ++----
 fs/fuse/control.c                         |  3 +--
 fs/fuse/inode.c                           |  4 ++--
 fs/hfs/inode.c                            |  6 ++----
 fs/hfsplus/inode.c                        |  3 +--
 fs/hpfs/inode.c                           |  3 +--
 fs/hpfs/namei.c                           | 12 ++++--------
 fs/hugetlbfs/inode.c                      |  3 +--
 fs/inode.c                                |  7 +++++++
 fs/isofs/inode.c                          |  3 +--
 fs/isofs/rock.c                           |  3 +--
 fs/ncpfs/inode.c                          |  3 +--
 fs/nfs/inode.c                            |  4 ++--
 fs/ntfs/inode.c                           | 12 ++++--------
 fs/ntfs/mft.c                             |  3 +--
 fs/ntfs/super.c                           |  3 +--
 fs/ocfs2/refcounttree.c                   |  3 +--
 fs/omfs/inode.c                           |  3 +--
 fs/pipe.c                                 |  3 +--
 fs/proc/base.c                            | 15 +++++----------
 fs/proc/fd.c                              |  8 ++++----
 fs/proc/inode.c                           |  3 +--
 fs/proc/self.c                            |  3 +--
 fs/stack.c                                |  3 +--
 fs/sysfs/inode.c                          |  3 +--
 fs/xfs/xfs_iops.c                         |  4 ++--
 include/linux/fs.h                        |  1 +
 ipc/mqueue.c                              |  3 +--
 kernel/cgroup.c                           |  3 +--
 mm/shmem.c                                |  3 +--
 net/socket.c                              |  3 +--
 53 files changed, 94 insertions(+), 142 deletions(-)

-- 
1.8.2.2

^ permalink raw reply

* RE: [PATCH 1/2] powerpc/85xx: add hardware automatically enter altivec idle state
From: Wang Dongsheng-B40534 @ 2013-08-23  2:52 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev@lists.ozlabs.org, Zhao Chenhui-B35336
In-Reply-To: <1377184761.5029.96.camel@snotra.buserror.net>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAyMiwgMjAxMyAxMToxOSBQTQ0KPiBUbzogV2Fu
ZyBEb25nc2hlbmctQjQwNTM0DQo+IENjOiBXb29kIFNjb3R0LUIwNzQyMTsgS3VtYXIgR2FsYTsg
WmhhbyBDaGVuaHVpLUIzNTMzNjsgbGludXhwcGMtDQo+IGRldkBsaXN0cy5vemxhYnMub3JnDQo+
IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXSBwb3dlcnBjLzg1eHg6IGFkZCBoYXJkd2FyZSBhdXRv
bWF0aWNhbGx5IGVudGVyDQo+IGFsdGl2ZWMgaWRsZSBzdGF0ZQ0KPiANCj4gT24gV2VkLCAyMDEz
LTA4LTIxIGF0IDIyOjEzIC0wNTAwLCBXYW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+ID4N
Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXb29kIFNjb3R0
LUIwNzQyMQ0KPiA+ID4gU2VudDogVHVlc2RheSwgQXVndXN0IDIwLCAyMDEzIDg6MzkgQU0NCj4g
PiA+IFRvOiBXYW5nIERvbmdzaGVuZy1CNDA1MzQNCj4gPiA+IENjOiBXb29kIFNjb3R0LUIwNzQy
MTsgS3VtYXIgR2FsYTsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gPiA+IFN1Ympl
Y3Q6IFJlOiBbUEFUQ0ggMS8yXSBwb3dlcnBjLzg1eHg6IGFkZCBoYXJkd2FyZSBhdXRvbWF0aWNh
bGx5DQo+ID4gPiBlbnRlciBhbHRpdmVjIGlkbGUgc3RhdGUNCj4gPiA+DQo+ID4gPiBJdCBqdXN0
IHNlZW1zIHdyb25nIHRvIGhhdmUgYW4gYWQtaG9jIG1lY2hhbmlzbSBmb3IgcnVubmluZw0KPiA+
ID4gY29yZS1zcGVjaWZpYyBjb2RlIHdoZW4gd2UgaGF2ZSBjcHV0YWJsZS4uLiAgSWYgd2UgcmVh
bGx5IG5lZWQgdGhpcywNCj4gPiA+IG1heWJlIHdlIHNob3VsZCBhZGQgYSAiY3B1X3NldHVwX2xh
dGUiIGZ1bmN0aW9uIHBvaW50ZXIuDQo+ID4gPg0KPiA+ID4gV2l0aCB5b3VyIHBhdGNoLCB3aGVu
IGRvZXMgdGhlIHBvd2VyIG1hbmFnZW1lbnQgcmVnaXN0ZXIgZ2V0IHNldA0KPiA+ID4gd2hlbiBo
b3QgcGx1Z2dpbmcgYSBjcHU/DQo+ID4gPg0KPiA+IFVtLi4gSSBkb24ndCBkZWFsIHdpdGggdGhp
cyBzaXR1YXRpb24uIEkgd2lsbCBmaXggaXQuDQo+ID4gX19zZXR1cC9yZXN0b3JlX2NwdV9lNjUw
MCBsb29rcyBnb29kLiBCdXQgb25seSBib290Y3B1IGNhbGwNCj4gX19zZXR1cF9jcHVfZTY1MDAs
IG5vdCBvbiBlYWNoIGNwdS4NCj4gPiBJIHRoaW5rIHRoaXMgaXMgYSBidWcuDQo+IA0KPiBPdGhl
ciBDUFVzIGNhbGwgX19yZXN0b3JlX2NwdV9lNjUwMC4NCj4gDQpObywgdGhlcmUgaXMgYm9vdGNv
cmUgb2Ygc2Vjb25kYXJ5IHRocmVhZCwgYW5kIG90aGVyIGNvcmVzIG9mIGZpcnN0IHRocmVhZCBj
YWxsIF9fcmVzdG9yZV9jcHVfZTY1MDAuDQpUaGlzIGZsb3cgaXMgY29ycmVjdD8NCg0KPiA+ID4g
PiA+IEFzIGZvciB0aGUgUFZSIGNoZWNrLCB0aGUgdXBzdHJlYW0ga2VybmVsIGRvZXNuJ3QgbmVl
ZCB0byBjYXJlDQo+ID4gPiA+ID4gYWJvdXQgcmV2MSwgc28ga25vd2luZyBpdCdzIGFuIGU2NTAw
IGlzIGdvb2QgZW5vdWdoLg0KPiA+ID4gPiA+DQo+ID4gPiA+IEJ1dCBBbHRpVmVjIGlkbGUgJiBQ
VzIwIGNhbm5vdCB3b3JrIG9uIHJldjEgcGxhdGZvcm0uDQo+ID4gPiA+IFdlIGRpZG4ndCBoYXZl
IHRvIGRlYWwgd2l0aCBpdD8NCj4gPiA+DQo+ID4gPiBVcHN0cmVhbSBkb2VzIG5vdCBydW4gb24g
cmV2MS4NCj4gPiA+DQo+ID4gOiksIEJ1dCBhbHJlYWR5IGhhdmUgY3VzdG9tZXJzIGluIHRoZSB1
c2Ugb2YgcmV2MS4NCj4gPiBXaHkgd2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHRoYXQ/DQo+
IA0KPiByZXYxIGlzIG5vdCBwcm9kdWN0aW9uLXF1YWxpZmllZC4gIFRob3NlIGN1c3RvbWVycyBh
cmUgc3VwcG9zZWQgdG8gb25seQ0KPiBiZSB1c2luZyByZXYxIGZvciBldmFsdWF0aW9uIGFuZCBl
YXJseSBkZXZlbG9wbWVudC4gIEl0J3Mgbm90IHRoYXQgd2UNCj4gZG9uJ3QgY2FyZSBhYm91dCBy
ZXYxIG5vdyAod2UgaGF2ZSB0aGUgU0RLIGZvciB0aGF0KSBidXQgdGhhdCB3ZSB3b24ndA0KPiBj
YXJlIGFib3V0IGl0IGxvbmctdGVybSBhbmQgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGNhcnJ5IGFy
b3VuZCBhIGJ1bmNoIG9mDQo+IGJhZ2dhZ2UgZm9yIGl0LiAgU29tZSBvZiB0aGUgd29ya2Fyb3Vu
ZHMgYXJlIHByZXR0eSBuYXN0eSAoZXNwZWNpYWxseSBBLQ0KPiAwMDYxOTgpLg0KPiANClRoYW5r
cy4NCg0K

^ permalink raw reply

* Re: [PATCH 2/3 V3] mmc:sdhc: get voltage from sdhc host
From: Zhang Haijun @ 2013-08-23  2:01 UTC (permalink / raw)
  To: Anton Vorontsov
  Cc: linux-mmc, Haijun Zhang, scottwood, cjb, linuxppc-dev, X.Xie
In-Reply-To: <20130823014841.GD24803@teo>

[-- Attachment #1: Type: text/plain, Size: 487 bytes --]

On 08/23/2013 09:48 AM, Anton Vorontsov wrote:
> On Mon, Aug 12, 2013 at 09:39:06AM +0800, Haijun Zhang wrote:
>> We use host->ocr_mask to hold the voltage get from device-tree
>> node, In case host->ocr_mask was available, we use host->ocr_mask
>> as the final available voltage can be used by MMC/SD/SDIO card.
>>
>> Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com>
>> ---
> Reviewed-by: Anton Vorontsov <anton@enomsg.org>
>
Thank you very much.

-- 
Thanks & Regards

Haijun


[-- Attachment #2: Type: text/html, Size: 1196 bytes --]

^ permalink raw reply

* [PATCH] iommu: WARN_ON when removing a device with no iommu_group associated
From: Wei Yang @ 2013-08-23  1:55 UTC (permalink / raw)
  To: alex.williamson, linux-kernel, linuxppc-dev; +Cc: aik, paulus, benh, Wei Yang

When removing a device from the system, iommu_group driver will try to
disconnect it from its group. While in some cases, one device may not
associated with any iommu_group. For example, not enough DMA address space.

In the generic bus notification, it will check dev->iommu_group before calling
iommu_group_remove_device(). While in some cases, developers may call
iommu_group_remove_device() in a different code path and without check. For
those devices with dev->iommu_group set to NULL, kernel will crash.

This patch gives a warning and return when trying to remove a device from an
iommu_group with dev->iommu_group set to NULL. This helps to indicate some bad
behavior and also guard the kernel.

Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
---
 drivers/iommu/iommu.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index fbe9ca7..43396f0 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -379,6 +379,9 @@ void iommu_group_remove_device(struct device *dev)
 	struct iommu_group *group = dev->iommu_group;
 	struct iommu_device *tmp_device, *device = NULL;
 
+	if (WARN_ON(!group))
+		return;
+
 	/* Pre-notify listeners that a device is being removed. */
 	blocking_notifier_call_chain(&group->notifier,
 				     IOMMU_GROUP_NOTIFY_DEL_DEVICE, dev);
-- 
1.7.5.4

^ permalink raw reply related

* Re: [PATCH 2/3 V3] mmc:sdhc: get voltage from sdhc host
From: Anton Vorontsov @ 2013-08-23  1:48 UTC (permalink / raw)
  To: Haijun Zhang; +Cc: linux-mmc, scottwood, cjb, linuxppc-dev, X.Xie
In-Reply-To: <1376271546-25085-4-git-send-email-Haijun.Zhang@freescale.com>

On Mon, Aug 12, 2013 at 09:39:06AM +0800, Haijun Zhang wrote:
> We use host->ocr_mask to hold the voltage get from device-tree
> node, In case host->ocr_mask was available, we use host->ocr_mask
> as the final available voltage can be used by MMC/SD/SDIO card.
> 
> Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com>
> ---

Reviewed-by: Anton Vorontsov <anton@enomsg.org>

^ permalink raw reply

* Re: [PATCH 3/3 V3] mmc:esdhc: add support to get voltage from device-tree
From: Anton Vorontsov @ 2013-08-23  1:46 UTC (permalink / raw)
  To: Haijun Zhang; +Cc: linux-mmc, scottwood, cjb, linuxppc-dev, X.Xie
In-Reply-To: <1376271546-25085-2-git-send-email-Haijun.Zhang@freescale.com>

On Mon, Aug 12, 2013 at 09:39:04AM +0800, Haijun Zhang wrote:
> Add suppport to get voltage from device-tree node for esdhc host,
> if voltage-ranges was specified in device-tree node we can get
> ocr_mask instead of read from host capacity register. If not voltages
> still can be get from host capacity register.
> 
> Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com>

Acked-by: Anton Vorontsov <anton@enomsg.org>

^ permalink raw reply

* Re: [PATCH V3] mmc:of_spi: Update the code of getting voltage-ranges
From: Anton Vorontsov @ 2013-08-23  1:45 UTC (permalink / raw)
  To: Haijun Zhang; +Cc: linux-mmc, scottwood, cjb, linuxppc-dev, X.Xie
In-Reply-To: <1376271546-25085-3-git-send-email-Haijun.Zhang@freescale.com>

On Mon, Aug 12, 2013 at 09:39:05AM +0800, Haijun Zhang wrote:
> Using function mmc_of_parse_voltage() to get voltage-ranges.
> 
> Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com>
> ---

Acked-by: Anton Vorontsov <anton@enomsg.org>

^ permalink raw reply

* Re: [PATCH 1/3 V5] mmc:core: parse voltage from device-tree
From: Anton Vorontsov @ 2013-08-23  1:43 UTC (permalink / raw)
  To: Haijun Zhang; +Cc: linux-mmc, scottwood, cjb, linuxppc-dev, X.Xie
In-Reply-To: <1376459171-21016-1-git-send-email-Haijun.Zhang@freescale.com>

On Wed, Aug 14, 2013 at 01:46:11PM +0800, Haijun Zhang wrote:
> Add function to support get voltage from device-tree.
> If there are voltage-range specified in device-tree node, this function
> will parse it and return the available voltage mask.
> 
> Signed-off-by: Haijun Zhang <haijun.zhang@freescale.com>

Acked-by: Anton Vorontsov <anton@enomsg.org>

Thanks a lot!

Anton

^ permalink raw reply

* Re: [PATCH 2/2] powerpc/iommu: check dev->iommu_group before remove a device from iommu_group
From: Wei Yang @ 2013-08-23  1:30 UTC (permalink / raw)
  To: Alex Williamson
  Cc: Alexey Kardashevskiy, paulus, benh, linuxppc-dev, linux-kernel
In-Reply-To: <1377188240.25163.23.camel@ul30vt.home>

On Thu, Aug 22, 2013 at 10:17:20AM -0600, Alex Williamson wrote:
>On Thu, 2013-08-22 at 23:41 +0800, Wei Yang wrote:
>> >> 
>> >> Alex,
>> >> 
>> >> Sorry for not including you in the very beginning, which may spend you more
>> >> efforts to track previous mails in this thread.
>> >> 
>> >> Do you think it is reasonable to check the dev->iommu_group in
>> >> iommu_group_remove_device()? Or we can count on the bus notifier to check it?
>> >> 
>> >> Welcome your suggestions~
>> >
>> >I don't really see the point of patch 1/2. iommu_group_remove_device()
>> >is specifically to remove a device from an iommu_group, so why would you
>> >call it on a device that's not part of an iommu_group.  If you want to
>> >avoid testing dev->iommu_group, then implement the .remove_device
>> >callback rather than using the notifier.  Thanks,
>> >
>> 
>> You mean the .remove_device like intel_iommu_remove_device()? 
>> 
>> Hmm... this function didn't check the dev->iommu_group and just call
>> iommu_group_remove_device(). I see this guard is put in iommu_bus_notifier(), 
>> which will check dev->iommu_group before invoke .remove_device.
>> 
>> Let me explain the case to triger the problem a little. 
>> 
>> On some platform, like powernv, we implement another bus notifier when devices
>> are added or removed in the system. Like Alexey mentioned, he missed the check
>> for dev->iommu_group in the notifier before removing it from iommu_group. This
>> trigger the crash.
>> 
>> So do you think it is reasonable to guard the kernel in
>> iommu_group_remove_device(), or we give the platform developers the
>> responsibility to check the dev->iommu_group before calling it?
>
>I don't see it as we need either patch 1/2 or patch 2/2.  We absolutely
>need some form of patch 2/2.  Patch 1/2 isn't necessarily bad, but it
>facilitates sloppy usage.  The iommu driver shouldn't be calling
>iommu_group_remove_device() on arbitrary devices that may or may not be
>part of an iommu_group.  Perhaps patch 1/2 should be:
>
>if (WARN_ON(!group))
>	return;
>

Agree, this one sounds more reasonable. :-)

Since patch 2/2 is merged by Alexey, I will re-send patch 1/2 alone.

Thanks for your comments ~

>Thanks,
>
>Alex
>
>_______________________________________________
>Linuxppc-dev mailing list
>Linuxppc-dev@lists.ozlabs.org
>https://lists.ozlabs.org/listinfo/linuxppc-dev

-- 
Richard Yang
Help you, Help me

^ permalink raw reply

* RE: [RFC PATCH v2 04/11] pstore: Add compression support to pstore
From: Seiji Aguchi @ 2013-08-22 23:07 UTC (permalink / raw)
  To: Aruna Balakrishnaiah, linuxppc-dev@ozlabs.org,
	tony.luck@intel.com, linux-kernel@vger.kernel.org,
	keescook@chromium.org
  Cc: jkenisto@linux.vnet.ibm.com, cbouatmailru@gmail.com,
	mahesh@linux.vnet.ibm.com, ccross@android.com
In-Reply-To: <20130816131805.3338.68767.stgit@aruna-ThinkPad-T420>

DQoNCj4gICAqIGNhbGxiYWNrIGZyb20ga21zZ19kdW1wLiAoczIsbDIpIGhhcyB0aGUgbW9zdCBy
ZWNlbnRseQ0KPiAgICogd3JpdHRlbiBieXRlcywgb2xkZXIgYnl0ZXMgYXJlIGluIChzMSxsMSku
IFNhdmUgYXMgbXVjaA0KPiBAQCAtMTQ4LDIzICsyNDMsNTYgQEAgc3RhdGljIHZvaWQgcHN0b3Jl
X2R1bXAoc3RydWN0IGttc2dfZHVtcGVyICpkdW1wZXIsDQo+ICAJCWNoYXIgKmRzdDsNCj4gIAkJ
dW5zaWduZWQgbG9uZyBzaXplOw0KPiAgCQlpbnQgaHNpemU7DQo+ICsJCWludCB6aXBwZWRfbGVu
ID0gLTE7DQo+ICAJCXNpemVfdCBsZW47DQo+IC0JCWJvb2wgY29tcHJlc3NlZCA9IGZhbHNlOw0K
PiArCQlib29sIGNvbXByZXNzZWQ7DQo+ICsJCXNpemVfdCB0b3RhbF9sZW47DQo+IA0KPiAtCQlk
c3QgPSBwc2luZm8tPmJ1ZjsNCj4gLQkJaHNpemUgPSBzcHJpbnRmKGRzdCwgIiVzIyVkIFBhcnQl
ZFxuIiwgd2h5LCBvb3BzY291bnQsIHBhcnQpOw0KPiAtCQlzaXplID0gcHNpbmZvLT5idWZzaXpl
IC0gaHNpemU7DQo+IC0JCWRzdCArPSBoc2l6ZTsNCj4gKwkJaWYgKGJpZ19vb3BzX2J1Zikgew0K
PiArCQkJZHN0ID0gYmlnX29vcHNfYnVmOw0KPiArCQkJaHNpemUgPSBzcHJpbnRmKGRzdCwgIiVz
IyVkIFBhcnQlZFxuIiwgd2h5LA0KPiArCQkJCQkJCW9vcHNjb3VudCwgcGFydCk7DQo+ICsJCQlz
aXplID0gYmlnX29vcHNfYnVmX3N6IC0gaHNpemU7DQo+IA0KPiAtCQlpZiAoIWttc2dfZHVtcF9n
ZXRfYnVmZmVyKGR1bXBlciwgdHJ1ZSwgZHN0LCBzaXplLCAmbGVuKSkNCj4gLQkJCWJyZWFrOw0K
PiArCQkJaWYgKCFrbXNnX2R1bXBfZ2V0X2J1ZmZlcihkdW1wZXIsIHRydWUsIGRzdCArIGhzaXpl
LA0KPiArCQkJCQkJCQlzaXplLCAmbGVuKSkNCj4gKwkJCQlicmVhazsNCj4gKw0KPiArCQkJemlw
cGVkX2xlbiA9IHBzdG9yZV9jb21wcmVzcyhkc3QsIHBzaW5mby0+YnVmLA0KPiArCQkJCQkJaHNp
emUgKyBsZW4sIHBzaW5mby0+YnVmc2l6ZSk7DQo+ICsNCj4gKwkJCWlmICh6aXBwZWRfbGVuID4g
MCkgew0KPiArCQkJCWNvbXByZXNzZWQgPSB0cnVlOw0KPiArCQkJCXRvdGFsX2xlbiA9IHppcHBl
ZF9sZW47DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJCXByX2VycigicHN0b3JlOiBjb21wcmVzc2lv
biBmYWlsZWQgZm9yIFBhcnQgJWQiDQo+ICsJCQkJCSIgcmV0dXJuZWQgJWRcbiIsIHBhcnQsIHpp
cHBlZF9sZW4pOw0KPiArCQkJCXByX2VycigicHN0b3JlOiBDYXB0dXJlIHVuY29tcHJlc3NlZCIN
Cj4gKwkJCQkJIiBvb3BzL3BhbmljIHJlcG9ydCBvZiBQYXJ0ICVkXG4iLCBwYXJ0KTsNCg0KV2h5
IGRpZCB5b3UgYWRkIHRoZXNlIG1lc3NhZ2VzIGluIHBzdG9yZV9kdW1wKCk/DQpJbiBteSB0ZXN0
IGNhc2UsIHRoZXkgYXJlIG5vdCBuZWVkZWQuLi4uDQoNCjxzbmlwPg0KIyBjYXQgZG1lc2ctZWZp
LTENClBhbmljIzIgUGFydDENCjw0PlsgIDM4My4yMDkwNTddIFJCUDogZmZmZjg4MDA2ZjU1MWU4
MCBSMDg6IDAwMDAwMDAwMDAwMDAwMDIgUjA5OiAwMDAwMDAwMDAwMDAwMDAwDQo8ND5bICAzODMu
MjA5MDU3XSBSMTA6IDAwMDAwMDAwMDAwMDAzODIgUjExOiAwMDAwMDAwMDAwMDAwMDAwIFIxMjog
MDAwMDAwMDAwMDAwMDA2Mw0KPDQ+WyAgMzgzLjIwOTA1N10gUjEzOiAwMDAwMDAwMDAwMDAwMjg2
IFIxNDogMDAwMDAwMDAwMDAwMDAwZiBSMTU6IDAwMDAwMDAwMDAwMDAwMDANCjw0PlsgIDM4My4y
MDkwNTddIEZTOiAgMDAwMDdmNTMzMTdjYzc0MCgwMDAwKSBHUzpmZmZmODgwMDdjNDAwMDAwKDAw
MDApIGtubEdTOjAwMDAwMDAwMDAwMDAwMDANCjw0PlsgIDM4My4yMDkwNTddIENTOiAgMDAxMCBE
UzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMNCjw0PlsgIDM4My4yMDkwNTdd
IENSMjogMDAwMDAwMDAwMDAwMDAwMCBDUjM6IDAwMDAwMDAwNzhhNzMwMDAgQ1I0OiAwMDAwMDAw
MDAwMDAwNmYwDQo8ND5bICAzODMuMjA5MDU3XSBTdGFjazoNCjw0PlsgIDM4My4yMDkwNTddICBm
ZmZmODgwMDZmNTUxZWI4IGZmZmZmZmZmODEzZDQwYTIgMDAwMDAwMDAwMDAwMDAwMiAwMDAwN2Y1
MzMxN2RiMDAwDQo8ND5bICAzODMuMjA5MDU3XSAgZmZmZjg4MDA2ZjU1MWY1MCAwMDAwMDAwMDAw
MDAwMDAyIDAwMDAwMDAwMDAwMDAwMDAgZmZmZjg4MDA2ZjU1MWVkOA0KPDQ+WyAgMzgzLjIwOTA1
N10gIGZmZmZmZmZmODEzZDQ1YWEgMDAwMDdmNTMzMTdkYjAwMCBmZmZmODgwMDNmOGMyYjAwIGZm
ZmY4ODAwNmY1NTFlZjgNCjw0PlsgIDM4My4yMDkwNTddIENhbGwgVHJhY2U6DQo8ND5bICAzODMu
MjA5MDU3XSAgWzxmZmZmZmZmZjgxM2Q0MGEyPl0gX19oYW5kbGVfc3lzcnErMHhhMi8weDE3MA0K
PDQ+WyAgMzgzLjIwOTA1N10gIFs8ZmZmZmZmZmY4MTNkNDVhYT5dIHdyaXRlX3N5c3JxX3RyaWdn
ZXIrMHg0YS8weDUwDQo8ND5bICAzODMuMjA5MDU3XSAgWzxmZmZmZmZmZjgxMjE5ODFkPl0gcHJv
Y19yZWdfd3JpdGUrMHgzZC8weDgwDQo8ND5bICAzODMuMjA5MDU3XSAgWzxmZmZmZmZmZjgxMWFl
YjIwPl0gdmZzX3dyaXRlKzB4YzAvMHgxZjANCjw0PlsgIDM4My4yMDkwNTddICBbPGZmZmZmZmZm
ODExYWY1OWM+XSBTeVNfd3JpdGUrMHg0Yy8weGEwDQo8ND5bICAzODMuMjA5MDU3XSAgWzxmZmZm
ZmZmZjgxNjhiZTgyPl0gc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiDQo8ND5bICAzODMu
MjA5MDU3XSBDb2RlOiBlZiBlOCBmZiBmNyBmZiBmZiBlYiBkOCA2NiAyZSAwZiAxZiA4NCAwMCAw
MCAwMCAwMCAwMCAwZiAxZiAwMCAwZiAxZiA0NCAwMCAwMCA1NSBjNyAwNSBjYyBmMyBjOSAwMCAw
MSAwMCAwMCAwMCA0OCA4OSBlNSAwZiBhZSBmOCA8YzY+IDA0IDI1IDAwIDAwIDAwIDAwIDAxIDVk
IGMzIDBmIDFmIDQ0IDAwIDAwIDU1IDMxIGMwIGM3IDA1IDVlIA0KPDE+WyAgMzgzLjIwOTA1N10g
UklQICBbPGZmZmZmZmZmODEzZDM5NDY+XSBzeXNycV9oYW5kbGVfY3Jhc2grMHgxNi8weDIwDQo8
ND5bICAzODMuMjA5MDU3XSAgUlNQIDxmZmZmODgwMDZmNTUxZTgwPg0KPDQ+WyAgMzgzLjIwOTA1
N10gQ1IyOiAwMDAwMDAwMDAwMDAwMDAwDQo8ND5bICAzODMuMjA5MDU3XSAtLS1bIGVuZCB0cmFj
ZSAwNGExY2RkYWQzN2I0YjMzIF0tLS0NCjwzPlsgIDM4My4yMDkwNTddIHBzdG9yZTogY29tcHJl
c3Npb24gZmFpbGVkIGZvciBQYXJ0IDIgcmV0dXJuZWQgLTUNCjwzPlsgIDM4My4yMDkwNTddIHBz
dG9yZTogQ2FwdHVyZSB1bmNvbXByZXNzZWQgb29wcy9wYW5pYyByZXBvcnQgb2YgUGFydCAyDQo8
Mz5bICAzODMuMjA5MDU3XSBwc3RvcmU6IGNvbXByZXNzaW9uIGZhaWxlZCBmb3IgUGFydCA1IHJl
dHVybmVkIC01DQo8Mz5bICAzODMuMjA5MDU3XSBwc3RvcmU6IENhcHR1cmUgdW5jb21wcmVzc2Vk
IG9vcHMvcGFuaWMgcmVwb3J0IG9mIFBhcnQgNQ0KPDM+WyAgMzgzLjIwOTA1N10gcHN0b3JlOiBj
b21wcmVzc2lvbiBmYWlsZWQgZm9yIFBhcnQgMTIgcmV0dXJuZWQgLTUNCjwzPlsgIDM4My4yMDkw
NTddIHBzdG9yZTogQ2FwdHVyZSB1bmNvbXByZXNzZWQgb29wcy9wYW5pYyByZXBvcnQgb2YgUGFy
dCAxMg0KPDA+WyAgMzgzLjIwOTA1N10gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEZhdGFs
IGV4Y2VwdGlvbg0KPDM+WyAgMzgzLjIwOTA1N10gZHJtX2ttc19oZWxwZXI6IHBhbmljIG9jY3Vy
cmVkLCBzd2l0Y2hpbmcgYmFjayB0byB0ZXh0IGNvbnNvbGUNCjxzbmlwPg0KDQoNCkluIGVmaS1w
c3RvcmUgY2FzZSwgYWZ0ZXIgcmVib290aW5nIGEgc3lzdGVtLA0Kd2UgYXJlIGFibGUgdG8ga25v
dyB3aGljaCBlbnRyeSBmYWlsZWQgdG8gY29tcHJlc3Mgd2l0aCAnQycgb3IgJ0QnIGFzIGJlbG93
Lg0KDQojbHMgL3N5cy9maXJtd2FyZS9lZmkvdmFycy8gfGdyZXAgZHVtcA0KZHVtcC10eXBlMC0x
MC0xLTEzNzcyMDQ3MzQtQy1jZmM4ZmM3OS1iZTJlLTRkZGMtOTdmMC05Zjk4YmZlMjk4YTANCmR1
bXAtdHlwZTAtMTAtMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJm
ZTI5OGEwDQpkdW1wLXR5cGUwLTExLTEtMTM3NzIwNDczNC1DLWNmYzhmYzc5LWJlMmUtNGRkYy05
N2YwLTlmOThiZmUyOThhMA0KZHVtcC10eXBlMC0xLTEtMTM3NzIwNDczNC1DLWNmYzhmYzc5LWJl
MmUtNGRkYy05N2YwLTlmOThiZmUyOThhMA0KZHVtcC10eXBlMC0xMS0yLTEzNzcyMDQ3MzQtQy1j
ZmM4ZmM3OS1iZTJlLTRkZGMtOTdmMC05Zjk4YmZlMjk4YTANCmR1bXAtdHlwZTAtMTItMS0xMzc3
MjA0NzM0LUQtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUw
LTEtMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpk
dW1wLXR5cGUwLTEyLTItMTM3NzIwNDczNC1ELWNmYzhmYzc5LWJlMmUtNGRkYy05N2YwLTlmOThi
ZmUyOThhMA0KZHVtcC10eXBlMC0xMy0xLTEzNzcyMDQ3MzQtQy1jZmM4ZmM3OS1iZTJlLTRkZGMt
OTdmMC05Zjk4YmZlMjk4YTANCmR1bXAtdHlwZTAtMTMtMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzkt
YmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTItMS0xMzc3MjA0NzM0LUQt
Y2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTItMi0xMzc3
MjA0NzM0LUQtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUw
LTMtMS0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpk
dW1wLXR5cGUwLTMtMi0xMzc3MjA0NzM0LUQtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJm
ZTI5OGEwDQpkdW1wLXR5cGUwLTQtMS0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3
ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTQtMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUy
ZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTUtMS0xMzc3MjA0NzM0LUQtY2Zj
OGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTUtMi0xMzc3MjA0
NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTYt
MS0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1w
LXR5cGUwLTYtMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5
OGEwDQpkdW1wLXR5cGUwLTctMS0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAt
OWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTctMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00
ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTgtMS0xMzc3MjA0NzM0LUMtY2ZjOGZj
NzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTgtMi0xMzc3MjA0NzM0
LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5cGUwLTktMS0x
Mzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEwDQpkdW1wLXR5
cGUwLTktMi0xMzc3MjA0NzM0LUMtY2ZjOGZjNzktYmUyZS00ZGRjLTk3ZjAtOWY5OGJmZTI5OGEw
DQoNClNlaWppDQo=

^ permalink raw reply

* RE: [RFC PATCH v2 04/11] pstore: Add compression support to pstore
From: Seiji Aguchi @ 2013-08-22 23:47 UTC (permalink / raw)
  To: Luck, Tony, Aruna Balakrishnaiah, linuxppc-dev@ozlabs.org,
	linux-kernel@vger.kernel.org, keescook@chromium.org
  Cc: jkenisto@linux.vnet.ibm.com, cbouatmailru@gmail.com,
	mahesh@linux.vnet.ibm.com, ccross@android.com
In-Reply-To: <3908561D78D1C84285E8C5FCA982C28F31CC7AC0@ORSMSX106.amr.corp.intel.com>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTHVjaywgVG9ueSBbbWFp
bHRvOnRvbnkubHVja0BpbnRlbC5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBBdWd1c3QgMjIsIDIw
MTMgNzoxNyBQTQ0KPiBUbzogU2VpamkgQWd1Y2hpOyBBcnVuYSBCYWxha3Jpc2huYWlhaDsgbGlu
dXhwcGMtZGV2QG96bGFicy5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGtlZXNj
b29rQGNocm9taXVtLm9yZw0KPiBDYzogamtlbmlzdG9AbGludXgudm5ldC5pYm0uY29tOyBhbmFu
dGhAaW4uaWJtLmNvbTsgYmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnOyBjYm91YXRtYWlscnVAZ21h
aWwuY29tOw0KPiBtYWhlc2hAbGludXgudm5ldC5pYm0uY29tOyBjY3Jvc3NAYW5kcm9pZC5jb20N
Cj4gU3ViamVjdDogUkU6IFtSRkMgUEFUQ0ggdjIgMDQvMTFdIHBzdG9yZTogQWRkIGNvbXByZXNz
aW9uIHN1cHBvcnQgdG8gcHN0b3JlDQo+IA0KPiA8MT5bICAzODMuMjA5MDU3XSBSSVAgIFs8ZmZm
ZmZmZmY4MTNkMzk0Nj5dIHN5c3JxX2hhbmRsZV9jcmFzaCsweDE2LzB4MjANCj4gPDQ+WyAgMzgz
LjIwOTA1N10gIFJTUCA8ZmZmZjg4MDA2ZjU1MWU4MD4NCj4gPDQ+WyAgMzgzLjIwOTA1N10gQ1Iy
OiAwMDAwMDAwMDAwMDAwMDAwDQo+IDw0PlsgIDM4My4yMDkwNTddIC0tLVsgZW5kIHRyYWNlIDA0
YTFjZGRhZDM3YjRiMzMgXS0tLQ0KPiA8Mz5bICAzODMuMjA5MDU3XSBwc3RvcmU6IGNvbXByZXNz
aW9uIGZhaWxlZCBmb3IgUGFydCAyIHJldHVybmVkIC01DQo+IDwzPlsgIDM4My4yMDkwNTddIHBz
dG9yZTogQ2FwdHVyZSB1bmNvbXByZXNzZWQgb29wcy9wYW5pYyByZXBvcnQgb2YgUGFydCAyDQo+
IDwzPlsgIDM4My4yMDkwNTddIHBzdG9yZTogY29tcHJlc3Npb24gZmFpbGVkIGZvciBQYXJ0IDUg
cmV0dXJuZWQgLTUNCj4gDQo+IEludGVyZXN0aW5nLiAgV2l0aCBFUlNUIGJhY2tlbmQgSSBkaWRu
J3Qgc2VlIHRoZXNlIG1lc3NhZ2VzLiAgVHJhY2VzIGluDQo+IHBzdG9yZSByZWNvdmVyZWQgZmls
ZXMgZ28gYXMgZmFyIGFzIHRoZSBsaW5lIGJlZm9yZSB0aGUgIi0tLVsgZW5kIHRyYWNlIDA0YTFj
ZGRhZDM3YjRiMzMgXS0tLSINCj4gDQo+IFdoeSB0aGUgZGlmZmVyZW5jZSBkZXBlbmRpbmcgb24g
d2hpY2ggYmFjayBlbmQgaXMgaW4gdXNlPw0KDQpJIHRoaW5rIHRoZSBkaWZmZXJlbmNlIGRvZXNu
J3QgZGVwZW5kIG9uIHRoZSBiYWNrIGVuZC4NClJhdGhlciBpdCBkZXBlbmRzIG9uIHRoZSBlbnZp
cm9ubWVudC4NCg0KSSB0ZXN0ZWQgb24gYSBrdm0gZ3Vlc3Qgd2l0aCBPVk1GLg0KDQpTZWlqaQ0K
DQoNCj4gDQo+IEJ1dCBJIGFncmVlIHRoYXQgd2Ugc2hvdWxkbid0IGhhdmUgdGhlc2UgbWVzc2Fn
ZXMuICBUaGV5IHVzZSB1cCBzcGFjZQ0KPiBpbiB0aGUgcGVyc2lzdGVudCBzdG9yZSB0aGF0IGNv
dWxkIGJlIGJldHRlciB1c2VkIHNhdmluZyBzb21lIG1vcmUgbGluZXMNCj4gZnJvbSBlYXJsaWVy
IGluIHRoZSBjb25zb2xlIGxvZy4NCj4gDQo+IC1Ub255DQo=

^ permalink raw reply

* RE: [RFC PATCH v2 06/11] pstore: Add decompression support to pstore
From: Seiji Aguchi @ 2013-08-22 23:04 UTC (permalink / raw)
  To: Aruna Balakrishnaiah, linuxppc-dev@ozlabs.org,
	tony.luck@intel.com, linux-kernel@vger.kernel.org,
	keescook@chromium.org
  Cc: jkenisto@linux.vnet.ibm.com, cbouatmailru@gmail.com,
	mahesh@linux.vnet.ibm.com, ccross@android.com
In-Reply-To: <20130816131821.3338.27923.stgit@aruna-ThinkPad-T420>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogbGludXgta2VybmVsLW93
bmVyQHZnZXIua2VybmVsLm9yZyBbbWFpbHRvOmxpbnV4LWtlcm5lbC1vd25lckB2Z2VyLmtlcm5l
bC5vcmddIE9uIEJlaGFsZiBPZiBBcnVuYSBCYWxha3Jpc2huYWlhaA0KPiBTZW50OiBGcmlkYXks
IEF1Z3VzdCAxNiwgMjAxMyA5OjE4IEFNDQo+IFRvOiBsaW51eHBwYy1kZXZAb3psYWJzLm9yZzsg
dG9ueS5sdWNrQGludGVsLmNvbTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsga2Vlc2Nv
b2tAY2hyb21pdW0ub3JnDQo+IENjOiBqa2VuaXN0b0BsaW51eC52bmV0LmlibS5jb207IGFuYW50
aEBpbi5pYm0uY29tOyBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc7IGNib3VhdG1haWxydUBnbWFp
bC5jb207DQo+IG1haGVzaEBsaW51eC52bmV0LmlibS5jb207IGNjcm9zc0BhbmRyb2lkLmNvbQ0K
PiBTdWJqZWN0OiBbUkZDIFBBVENIIHYyIDA2LzExXSBwc3RvcmU6IEFkZCBkZWNvbXByZXNzaW9u
IHN1cHBvcnQgdG8gcHN0b3JlDQo+IA0KPiBCYXNlZCBvbiB0aGUgZmxhZyAnY29tcHJlc3NlZCcg
c2V0IG9yIG5vdCwgcHN0b3JlIHdpbGwgZGVjb21wcmVzcyB0aGUNCj4gZGF0YSByZXR1cm5pbmcg
YSBwbGFpbiB0ZXh0IGZpbGUuIElmIGRlY29tcHJlc3Npb24gZmFpbHMgZm9yIGEgcGFydGljdWxh
cg0KPiByZWNvcmQgaXQgd2lsbCBoYXZlIHRoZSBjb21wcmVzc2VkIGRhdGEgaW4gdGhlIGZpbGUg
d2hpY2ggY2FuIGJlDQo+IGRlY29tcHJlc3NlZCB3aXRoICdvcGVuc3NsJyBjb21tYW5kIGxpbmUg
dG9vbC4NCg0KSWYgdGhlIGRlY29tcHJlc3Npb24gZmFpbHMgYW5kIG9wZW5zc2wgZG9lc24ndCB3
b3JrLCB0aGUgd29yc3QgY2FzZSBpcyB0aGF0IHVzZXJzIGNhbid0IHJlYWQgdGhlIGVudHJ5Lg0K
SW4gdGhhdCBjYXNlLCBwc3RvcmUgaXMgbWVhbmluZ2xlc3MgYXQgYWxsLg0KDQpBbHNvLCBmb3Ig
dXNlcnMgd2hvIHdhbnQgdG8gZ2V0IGEgc2luZ2xlIHBhbmljIG1lc3NhZ2UsIGEgY29tcHJlc3Np
b24gaXMgbm90IG5lZWRlZC4NCg0KU28sIEkgdGhpbmsgd2Ugc3RpbGwgaGF2ZSB0byBzdXBwb3J0
IG5vbi1jb21wcmVzc2lvbiBtb2RlLg0KKElNTywgcHN0b3JlIGNhbiB0YWtlIGtkdW1wIGFzIGEg
bW9kZWwuIEtkdW1wIHN1cHBvcnRzIGJvdGggY29tcHJlc3Npb24gYW5kIG5vbi1jb21wcmVzc2lv
biBtb2RlLikNCg0KQnV0LCBpZiB5b3UgdGhpbmsgbXkgY29tbWVudCBpcyBvdXRzaWRlIHRoaXMg
cGF0Y2hzZXQsIGl0J3MgT0suDQpXZSBjYW4gbWFrZSBpdCB3aXRoIGEgc2VwYXJhdGUgcGF0Y2gu
DQoNClNlaWppDQo=

^ permalink raw reply

* Re: Detecting LD/ST instruction
From: Michael Neuling @ 2013-08-22 23:31 UTC (permalink / raw)
  To: Sukadev Bhattiprolu; +Cc: linuxppc-dev
In-Reply-To: <20130822225525.GA5214@us.ibm.com>

> I am working on implementing the 'perf mem' command for Power
> systems. This would for instance, let us know where in the memory
> hierarchy (L1, L2, Local RAM etc) the data for a load/store
> instruction was found (hit).
> 
> On Power7, if the mcmcra[DCACHE_MISS] is clear _and_ the
> instruction is a load/store, then it implies a L1-hit.
> 
> Unlike on Power8, the Power7 event vector has no indication
> if the instruction was load/store.
> 
> In the context of a PMU interrupt, is there any way to determine
> if an instruction is a load/store ?

You could read the instruction from memory and work it out.  

We do something similar to this in power_pmu_bhrb_to() where we read the
instruction and work out where the branch is going to.

If you do this, please use and/or extend the functions in
arch/powerpc/lib/code-patching.c

Mikey

^ permalink raw reply

* RE: [RFC PATCH v2 04/11] pstore: Add compression support to pstore
From: Luck, Tony @ 2013-08-22 23:17 UTC (permalink / raw)
  To: Seiji Aguchi, Aruna Balakrishnaiah, linuxppc-dev@ozlabs.org,
	linux-kernel@vger.kernel.org, keescook@chromium.org
  Cc: jkenisto@linux.vnet.ibm.com, cbouatmailru@gmail.com,
	mahesh@linux.vnet.ibm.com, ccross@android.com
In-Reply-To: <A5ED84D3BB3A384992CBB9C77DEDA4D443E8F0D7@USINDEM103.corp.hds.com>

PDE+WyAgMzgzLjIwOTA1N10gUklQICBbPGZmZmZmZmZmODEzZDM5NDY+XSBzeXNycV9oYW5kbGVf
Y3Jhc2grMHgxNi8weDIwDQo8ND5bICAzODMuMjA5MDU3XSAgUlNQIDxmZmZmODgwMDZmNTUxZTgw
Pg0KPDQ+WyAgMzgzLjIwOTA1N10gQ1IyOiAwMDAwMDAwMDAwMDAwMDAwDQo8ND5bICAzODMuMjA5
MDU3XSAtLS1bIGVuZCB0cmFjZSAwNGExY2RkYWQzN2I0YjMzIF0tLS0NCjwzPlsgIDM4My4yMDkw
NTddIHBzdG9yZTogY29tcHJlc3Npb24gZmFpbGVkIGZvciBQYXJ0IDIgcmV0dXJuZWQgLTUNCjwz
PlsgIDM4My4yMDkwNTddIHBzdG9yZTogQ2FwdHVyZSB1bmNvbXByZXNzZWQgb29wcy9wYW5pYyBy
ZXBvcnQgb2YgUGFydCAyDQo8Mz5bICAzODMuMjA5MDU3XSBwc3RvcmU6IGNvbXByZXNzaW9uIGZh
aWxlZCBmb3IgUGFydCA1IHJldHVybmVkIC01DQoNCkludGVyZXN0aW5nLiAgV2l0aCBFUlNUIGJh
Y2tlbmQgSSBkaWRuJ3Qgc2VlIHRoZXNlIG1lc3NhZ2VzLiAgVHJhY2VzIGluIA0KcHN0b3JlIHJl
Y292ZXJlZCBmaWxlcyBnbyBhcyBmYXIgYXMgdGhlIGxpbmUgYmVmb3JlIHRoZSAiLS0tWyBlbmQg
dHJhY2UgMDRhMWNkZGFkMzdiNGIzMyBdLS0tIg0KDQpXaHkgdGhlIGRpZmZlcmVuY2UgZGVwZW5k
aW5nIG9uIHdoaWNoIGJhY2sgZW5kIGlzIGluIHVzZT8NCg0KQnV0IEkgYWdyZWUgdGhhdCB3ZSBz
aG91bGRuJ3QgaGF2ZSB0aGVzZSBtZXNzYWdlcy4gIFRoZXkgdXNlIHVwIHNwYWNlDQppbiB0aGUg
cGVyc2lzdGVudCBzdG9yZSB0aGF0IGNvdWxkIGJlIGJldHRlciB1c2VkIHNhdmluZyBzb21lIG1v
cmUgbGluZXMNCmZyb20gZWFybGllciBpbiB0aGUgY29uc29sZSBsb2cuDQoNCi1Ub255DQo=

^ permalink raw reply

* Re: [GIT PULL v2] DT/core: cpu_ofnode updates for v3.12
From: Rafael J. Wysocki @ 2013-08-22 23:12 UTC (permalink / raw)
  To: Sudeep KarkadaNagesha
  Cc: Jonas Bonn, devicetree@vger.kernel.org, monstr@monstr.eu,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	rob.herring@calxeda.com, arm@kernel.org, Viresh Kumar,
	linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org
In-Reply-To: <521618E4.4020007@arm.com>

On Thursday, August 22, 2013 02:57:56 PM Sudeep KarkadaNagesha wrote:
> Hi Rafael,
> 
> Here is the v2 of the pull request for cpu of_node updates for v3.12
> It includes ACK for all the new changes since v1(mainly from Ben for
> PPC). Currently there's trivial conflict with today's linux-next in 3
> files. Let me know if you need me to rebase this on any particular
> branch if needed.
> 
> Regards,
> Sudeep
> 
> The following changes since commit b36f4be3de1b123d8601de062e7dbfc904f305fb:
> 
>   Linux 3.11-rc6 (2013-08-18 14:36:53 -0700)
> 
> are available in the git repository at:
> 
>   git://linux-arm.org/linux-skn.git cpu_of_node
> 
> for you to fetch changes up to 1037b2752345cc5666e90b711a913ab2ae6c5920:
> 
>   cpufreq: pmac32-cpufreq: remove device tree parsing for cpu nodes
> (2013-08-21 10:29:56 +0100)
> 
> ----------------------------------------------------------------
> Sudeep KarkadaNagesha (19):
>    microblaze: remove undefined of_get_cpu_node declaration
>    openrisc: remove undefined of_get_cpu_node declaration
>    powerpc: refactor of_get_cpu_node to support other architectures
>    of: move of_get_cpu_node implementation to DT core library
>    ARM: DT/kernel: define ARM specific arch_match_cpu_phys_id
>    driver/core: cpu: initialize of_node in cpu's device struture
>    of/device: add helper to get cpu device node from logical cpu index
>    ARM: topology: remove hwid/MPIDR dependency from cpu_capacity
>    ARM: mvebu: remove device tree parsing for cpu nodes
>    drivers/bus: arm-cci: avoid parsing DT for cpu device nodes
>    cpufreq: imx6q-cpufreq: remove device tree parsing for cpu nodes
>    cpufreq: cpufreq-cpu0: remove device tree parsing for cpu nodes
>    cpufreq: highbank-cpufreq: remove device tree parsing for cpu nodes
>    cpufreq: spear-cpufreq: remove device tree parsing for cpu nodes
>    cpufreq: kirkwood-cpufreq: remove device tree parsing for cpu nodes
>    cpufreq: arm_big_little: remove device tree parsing for cpu nodes
>    cpufreq: maple-cpufreq: remove device tree parsing for cpu nodes
>    cpufreq: pmac64-cpufreq: remove device tree parsing for cpu nodes
>    cpufreq: pmac32-cpufreq: remove device tree parsing for cpu nodes
> 
>  arch/arm/kernel/devtree.c           |  5 ++
>  arch/arm/kernel/topology.c          | 61 +++++-----------
>  arch/arm/mach-imx/mach-imx6q.c      |  3 +-
>  arch/arm/mach-mvebu/platsmp.c       | 51 ++++++-------
>  arch/microblaze/include/asm/prom.h  |  3 -
>  arch/openrisc/include/asm/prom.h    |  3 -
>  arch/powerpc/include/asm/prom.h     |  3 -
>  arch/powerpc/kernel/prom.c          | 43 +-----------
>  drivers/base/cpu.c                  |  2 +
>  drivers/bus/arm-cci.c               | 28 ++------
>  drivers/cpufreq/arm_big_little_dt.c | 40 ++++-------
>  drivers/cpufreq/cpufreq-cpu0.c      | 23 +-----
>  drivers/cpufreq/highbank-cpufreq.c  | 18 ++---
>  drivers/cpufreq/imx6q-cpufreq.c     |  4 +-
>  drivers/cpufreq/kirkwood-cpufreq.c  |  8 ++-
>  drivers/cpufreq/maple-cpufreq.c     | 23 +-----
>  drivers/cpufreq/pmac32-cpufreq.c    |  5 +-
>  drivers/cpufreq/pmac64-cpufreq.c    | 47 +++---------
>  drivers/cpufreq/spear-cpufreq.c     |  4 +-
>  drivers/of/base.c                   | 95 ++++++++++++++++++++++++
>  include/linux/cpu.h                 |  1 +
>  include/linux/of.h                  |  7 ++
>  include/linux/of_device.h           | 15 ++++
>  23 files changed, 226 insertions(+), 266 deletions(-)

Pulled, thanks!

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox