lnfs: Cleaned up compile warnings when NFS_V4_SECURITY_LABEL is not set.
Subsystems (2)
PATCH 1/1 lnfs: Cleaned up compile warnings when NFS_V4_SECURITY_LABEL is not set.
This patch cleans up a number compile warnings when the label NFS code exists but is not configured to compile.
--- fs/nfs/nfs4proc.c | 36 ++++++++++++++++++++++++------------ include/linux/nfs_fs.h | 4 ++-- 2 files changed, 26 insertions(+), 14 deletions(-)
fs/nfs/nfs4proc.c +24 -12
@@ -926,8 +926,8 @@ err_free_label:#ifdef CONFIG_NFS_V4_SECURITY_LABEL if (server->caps &NFS_CAP_SECURITY_LABEL )nfs4_label_free (p->f_label); -#endif err_free_p: +#endif kfree (p); err:dput (parent);
@@ -2438,9 +2438,10 @@ static struct inode * nfs4_atomic_open(struct inode *dir, struct nfs_open_context *ctx, int open_flags, struct iattr *attr) { struct nfs4_state *state; -struct nfs4_label l, *label =NULL ; - +struct nfs4_label *label =NULL ; #ifdef CONFIG_NFS_V4_SECURITY_LABEL + struct nfs4_label l; + if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) { struct dentry *dentry = ctx->dentry; int error;
@@ -3026,8 +3027,8 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry#ifdef CONFIG_NFS_V4_SECURITY_LABEL if (server->caps &NFS_CAP_SECURITY_LABEL )nfs4_label_free (res.label); -#endif out: +#endif nfs_free_fattr (res.fattr);return status; }
@@ -3105,7 +3106,10 @@ static int nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, int flags) { - struct nfs4_label l, *ilabel = NULL; + struct nfs4_label *ilabel = NULL; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif struct nfs_open_context *ctx;struct nfs4_state *state;int status =0 ;
@@ -3298,8 +3302,8 @@ static int _nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name,nfs4_label_free (res.old_label);nfs4_label_free (res.new_label); } -#endif out: +#endif return status; }
@@ -3418,7 +3422,9 @@ static struct nfs4_createdata *nfs4_alloc_createdata(struct inode *dir,nfs_fattr_init (data->res.fattr); }return data; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL out_free: +#endif kfree (data);return NULL ; }
@@ -3474,11 +3480,11 @@ static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page, unsigned int len, struct iattr *sattr) { struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ;int err; - - +struct nfs4_label *label =NULL ; #ifdef CONFIG_NFS_V4_SECURITY_LABEL + struct nfs4_label l; + if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) { err = security_dentry_init_security(dentry, sattr->ia_mode, &dentry->d_name, &l.label, &l.len);
@@ -3522,7 +3528,10 @@ static int nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry, struct iattr *sattr) {struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ; +struct nfs4_label *label =NULL ; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif int err;#ifdef CONFIG_NFS_V4_SECURITY_LABEL
@@ -3640,9 +3649,12 @@ out:static int nfs4_proc_mknod (struct inode *dir,struct dentry *dentry,struct iattr *sattr,dev_t rdev) { -struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ;int err; +struct nfs4_exception exception = { }; +struct nfs4_label *label =NULL ; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif #ifdef CONFIG_NFS_V4_SECURITY_LABEL if (nfs_server_capable (dir,NFS_CAP_SECURITY_LABEL )) {
include/linux/nfs_fs.h +2 -2
@@ -502,8 +502,8 @@ extern void nfs4_label_init(struct nfs4_label *);extern void nfs4_label_free (struct nfs4_label *);#else static inline struct nfs4_label *nfs4_label_alloc (gfp_t flags) {return NULL ; } -static inline void nfs4_label_init (struct nfs4_label *) {} -static inline void nfs4_label_free (struct nfs4_label *label) {} +static inline void nfs4_label_init (void *label) {} +static inline void nfs4_label_free (void *label) {}#endif /*
Signature · 1 line
1.7.11.7
Quoted 142 lines · Steve Dickson
This patch cleans up a number compile warnings when the label NFS code exists but is not configured to compile.
Signed-off-by Steve Dickson <[email protected]>--- fs/nfs/nfs4proc.c | 36 ++++++++++++++++++++++++------------ include/linux/nfs_fs.h | 4 ++-- 2 files changed, 26 insertions(+), 14 deletions(-)fs/nfs/nfs4proc.c +4
-3@@ -926,8 +926,8 @@ err_free_label:#ifdef CONFIG_NFS_V4_SECURITY_LABEL if (server->caps &NFS_CAP_SECURITY_LABEL )nfs4_label_free (p->f_label); -#endif err_free_p: +#endif kfree (p); err:dput (parent);@@ -2438,9 +2438,10 @@ static struct inode * nfs4_atomic_open(struct inode *dir, struct nfs_open_context *ctx, int open_flags, struct iattr *attr) { struct nfs4_state *state; -struct nfs4_label l, *label =NULL ; - +struct nfs4_label *label =NULL ; #ifdef CONFIG_NFS_V4_SECURITY_LABEL + struct nfs4_label l; + if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) { struct dentry *dentry = ctx->dentry;fs/nfs/nfs4proc.c +1
-1int error;@@ -3026,8 +3027,8 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry#ifdef CONFIG_NFS_V4_SECURITY_LABEL if (server->caps &NFS_CAP_SECURITY_LABEL )nfs4_label_free (res.label); -#endif out: +#endif nfs_free_fattr (res.fattr);return status;}
fs/nfs/nfs4proc.c +4
-1@@ -3105,7 +3106,10 @@ static int nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, int flags) { - struct nfs4_label l, *ilabel = NULL; + struct nfs4_label *ilabel = NULL; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif struct nfs_open_context *ctx;struct nfs4_state *state;fs/nfs/nfs4proc.c +3
-1int status =0 ;@@ -3298,8 +3302,8 @@ static int _nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name,nfs4_label_free (res.old_label);nfs4_label_free (res.new_label); } -#endif out: +#endif return status; }@@ -3418,7 +3422,9 @@ static struct nfs4_createdata *nfs4_alloc_createdata(struct inode *dir, nfs_fattr_init(data->res.fattr); }return data; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL out_free: +#endif kfree (data);return NULL ;}
fs/nfs/nfs4proc.c +3
-3@@ -3474,11 +3480,11 @@ static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page, unsigned int len, struct iattr *sattr) { struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ;int err; - - +struct nfs4_label *label =NULL ; #ifdef CONFIG_NFS_V4_SECURITY_LABEL + struct nfs4_label l; + if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) { err = security_dentry_init_security(dentry, sattr->ia_mode,fs/nfs/nfs4proc.c +4
-1&dentry->d_name, &l.label, &l.len);@@ -3522,7 +3528,10 @@ static int nfs4_proc_mkdir(struct inode *dir,struct dentry *dentry, struct iattr *sattr) { struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ; +struct nfs4_label *label =NULL ; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif int err;#ifdef
CONFIG_NFS_V4_SECURITY_LABELfs/nfs/nfs4proc.c +5
-2@@ -3640,9 +3649,12 @@ out:static int nfs4_proc_mknod (struct inode *dir,struct dentry *dentry,struct iattr *sattr,dev_t rdev) { -struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ;int err; +struct nfs4_exception exception = { }; +struct nfs4_label *label =NULL ; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif #ifdef CONFIG_NFS_V4_SECURITY_LABEL if (nfs_server_capable (dir,NFS_CAP_SECURITY_LABEL )) {include/linux/nfs_fs.h +2
-2@@ -502,8 +502,8 @@ extern void nfs4_label_init(struct nfs4_label *);extern void nfs4_label_free (struct nfs4_label *);#else static inline struct nfs4_label *nfs4_label_alloc (gfp_t flags) {return NULL ; } -static inline void nfs4_label_init (struct nfs4_label *) {} -static inline void nfs4_label_free (struct nfs4_label *label) {} +static inline void nfs4_label_init (void *label) {} +static inline void nfs4_label_free (void *label) {}#endif
Quoted 1 line
/*
Thanks for the patch. The question I have here is should I tag Steve's patch on the end of the patch set or should I integrate it back into the original patches?
Dave
T24gTW9uLCAyMDEyLTEyLTAzIGF0IDE2OjE4IC0wNTAwLCBEYXZpZCBRdWlnbGV5IHdyb3RlOg0K PiBPbiAxMi8wMy8yMDEyIDE1OjI0LCBTdGV2ZSBEaWNrc29uIHdyb3RlOg0KPiA+IFRoaXMgcGF0 Y2ggY2xlYW5zIHVwIGEgbnVtYmVyIGNvbXBpbGUgd2FybmluZ3Mgd2hlbiB0aGUNCj4gPiBsYWJl bCBORlMgY29kZSBleGlzdHMgYnV0IGlzIG5vdCBjb25maWd1cmVkIHRvIGNvbXBpbGUuDQo+ID4N Cj4gPiBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4NCj4g PiAtLS0NCj4gPiAgZnMvbmZzL25mczRwcm9jLmMgICAgICB8IDM2ICsrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLQ0KPiA+ICBpbmNsdWRlL2xpbnV4L25mc19mcy5oIHwgIDQgKyst LQ0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygt KQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0cHJvYy5jIGIvZnMvbmZzL25mczRw cm9jLmMNCj4gPiBpbmRleCAyYzhkZDU1Li4wMmUzMzAzIDEwMDY0NA0KPiA+IC0tLSBhL2ZzL25m cy9uZnM0cHJvYy5jDQo+ID4gKysrIGIvZnMvbmZzL25mczRwcm9jLmMNCj4gPiBAQCAtOTI2LDgg KzkyNiw4IEBAIGVycl9mcmVlX2xhYmVsOg0KPiA+ICAjaWZkZWYgQ09ORklHX05GU19WNF9TRUNV UklUWV9MQUJFTA0KPiA+ICAJaWYgKHNlcnZlci0+Y2FwcyAmIE5GU19DQVBfU0VDVVJJVFlfTEFC RUwpDQo+ID4gIAkJbmZzNF9sYWJlbF9mcmVlKHAtPmZfbGFiZWwpOw0KPiA+IC0jZW5kaWYNCj4g PiAgZXJyX2ZyZWVfcDoNCj4gPiArI2VuZGlmDQo+ID4gIAlrZnJlZShwKTsNCj4gPiAgZXJyOg0K PiA+ICAJZHB1dChwYXJlbnQpOw0KPiA+IEBAIC0yNDM4LDkgKzI0MzgsMTAgQEAgc3RhdGljIHN0 cnVjdCBpbm9kZSAqDQo+ID4gIG5mczRfYXRvbWljX29wZW4oc3RydWN0IGlub2RlICpkaXIsIHN0 cnVjdCBuZnNfb3Blbl9jb250ZXh0ICpjdHgsDQo+ID4gaW50IG9wZW5fZmxhZ3MsIHN0cnVjdCBp YXR0ciAqYXR0cikNCj4gPiAgew0KPiA+ICAJc3RydWN0IG5mczRfc3RhdGUgKnN0YXRlOw0KPiA+ IC0Jc3RydWN0IG5mczRfbGFiZWwgbCwgKmxhYmVsID0gTlVMTDsNCj4gPiAtDQo+ID4gKwlzdHJ1 Y3QgbmZzNF9sYWJlbCAqbGFiZWwgPSBOVUxMOw0KPiA+ICAjaWZkZWYgQ09ORklHX05GU19WNF9T RUNVUklUWV9MQUJFTA0KPiA+ICsJc3RydWN0IG5mczRfbGFiZWwgbDsNCj4gPiArDQo+ID4gIAlp ZiAobmZzX3NlcnZlcl9jYXBhYmxlKGRpciwgTkZTX0NBUF9TRUNVUklUWV9MQUJFTCkpIHsNCj4g PiAgCQlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBjdHgtPmRlbnRyeTsNCj4gPiAgCQlpbnQgZXJy b3I7DQo+ID4gQEAgLTMwMjYsOCArMzAyNyw4IEBAIHN0YXRpYyBpbnQgX25mczRfcHJvY19hY2Nl c3Moc3RydWN0IGlub2RlDQo+ID4gKmlub2RlLCBzdHJ1Y3QgbmZzX2FjY2Vzc19lbnRyeSAqZW50 cnkNCj4gPiAgI2lmZGVmIENPTkZJR19ORlNfVjRfU0VDVVJJVFlfTEFCRUwNCj4gPiAgCWlmIChz ZXJ2ZXItPmNhcHMgJiBORlNfQ0FQX1NFQ1VSSVRZX0xBQkVMKQ0KPiA+ICAJCW5mczRfbGFiZWxf ZnJlZShyZXMubGFiZWwpOw0KPiA+IC0jZW5kaWYNCj4gPiAgb3V0Og0KPiA+ICsjZW5kaWYNCj4g PiAgCW5mc19mcmVlX2ZhdHRyKHJlcy5mYXR0cik7DQo+ID4gIAlyZXR1cm4gc3RhdHVzOw0KPiA+ ICB9DQo+ID4gQEAgLTMxMDUsNyArMzEwNiwxMCBAQCBzdGF0aWMgaW50DQo+ID4gIG5mczRfcHJv Y19jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0 DQo+ID4gaWF0dHIgKnNhdHRyLA0KPiA+ICAJCSBpbnQgZmxhZ3MpDQo+ID4gIHsNCj4gPiAtCXN0 cnVjdCBuZnM0X2xhYmVsIGwsICppbGFiZWwgPSBOVUxMOw0KPiA+ICsJc3RydWN0IG5mczRfbGFi ZWwgKmlsYWJlbCA9IE5VTEw7DQo+ID4gKyNpZmRlZiBDT05GSUdfTkZTX1Y0X1NFQ1VSSVRZX0xB QkVMDQo+ID4gKwlzdHJ1Y3QgbmZzNF9sYWJlbCBsOw0KPiA+ICsjZW5kaWYNCj4gPiAgCXN0cnVj dCBuZnNfb3Blbl9jb250ZXh0ICpjdHg7DQo+ID4gIAlzdHJ1Y3QgbmZzNF9zdGF0ZSAqc3RhdGU7 DQo+ID4gIAlpbnQgc3RhdHVzID0gMDsNCj4gPiBAQCAtMzI5OCw4ICszMzAyLDggQEAgc3RhdGlj IGludCBfbmZzNF9wcm9jX3JlbmFtZShzdHJ1Y3QgaW5vZGUNCj4gPiAqb2xkX2Rpciwgc3RydWN0 IHFzdHIgKm9sZF9uYW1lLA0KPiA+ICAJCW5mczRfbGFiZWxfZnJlZShyZXMub2xkX2xhYmVsKTsN Cj4gPiAgCQluZnM0X2xhYmVsX2ZyZWUocmVzLm5ld19sYWJlbCk7DQo+ID4gIAl9DQo+ID4gLSNl bmRpZg0KPiA+ICBvdXQ6DQo+ID4gKyNlbmRpZg0KPiA+ICAJcmV0dXJuIHN0YXR1czsNCj4gPiAg fQ0KPiA+DQo+ID4gQEAgLTM0MTgsNyArMzQyMiw5IEBAIHN0YXRpYyBzdHJ1Y3QgbmZzNF9jcmVh dGVkYXRhDQo+ID4gKm5mczRfYWxsb2NfY3JlYXRlZGF0YShzdHJ1Y3QgaW5vZGUgKmRpciwNCj4g PiAgCQluZnNfZmF0dHJfaW5pdChkYXRhLT5yZXMuZmF0dHIpOw0KPiA+ICAJfQ0KPiA+ICAJcmV0 dXJuIGRhdGE7DQo+ID4gKyNpZmRlZiBDT05GSUdfTkZTX1Y0X1NFQ1VSSVRZX0xBQkVMDQo+ID4g IG91dF9mcmVlOg0KPiA+ICsjZW5kaWYNCj4gPiAgCWtmcmVlKGRhdGEpOw0KPiA+ICAJcmV0dXJu IE5VTEw7DQo+ID4gIH0NCj4gPiBAQCAtMzQ3NCwxMSArMzQ4MCwxMSBAQCBzdGF0aWMgaW50IG5m czRfcHJvY19zeW1saW5rKHN0cnVjdCBpbm9kZQ0KPiA+ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRl bnRyeSwNCj4gPiAgCQlzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IGxlbiwgc3RydWN0 IGlhdHRyICpzYXR0cikNCj4gPiAgew0KPiA+ICAJc3RydWN0IG5mczRfZXhjZXB0aW9uIGV4Y2Vw dGlvbiA9IHsgfTsNCj4gPiAtCXN0cnVjdCBuZnM0X2xhYmVsIGwsICpsYWJlbCA9IE5VTEw7DQo+ ID4gIAlpbnQgZXJyOw0KPiA+IC0NCj4gPiAtDQo+ID4gKwlzdHJ1Y3QgbmZzNF9sYWJlbCAqbGFi ZWwgPSBOVUxMOw0KPiA+ICAjaWZkZWYgQ09ORklHX05GU19WNF9TRUNVUklUWV9MQUJFTA0KPiA+ ICsJc3RydWN0IG5mczRfbGFiZWwgbDsNCj4gPiArDQo+ID4gIAlpZiAobmZzX3NlcnZlcl9jYXBh YmxlKGRpciwgTkZTX0NBUF9TRUNVUklUWV9MQUJFTCkpIHsNCj4gPiAgCQllcnIgPSBzZWN1cml0 eV9kZW50cnlfaW5pdF9zZWN1cml0eShkZW50cnksIHNhdHRyLT5pYV9tb2RlLA0KPiA+ICAJCQkJ CSZkZW50cnktPmRfbmFtZSwgJmwubGFiZWwsICZsLmxlbik7DQo+ID4gQEAgLTM1MjIsNyArMzUy OCwxMCBAQCBzdGF0aWMgaW50IG5mczRfcHJvY19ta2RpcihzdHJ1Y3QgaW5vZGUgKmRpciwNCj4g PiBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQo+ID4gIAkJc3RydWN0IGlhdHRyICpzYXR0cikNCj4g PiAgew0KPiA+ICAJc3RydWN0IG5mczRfZXhjZXB0aW9uIGV4Y2VwdGlvbiA9IHsgfTsNCj4gPiAt CXN0cnVjdCBuZnM0X2xhYmVsIGwsICpsYWJlbCA9IE5VTEw7DQo+ID4gKwlzdHJ1Y3QgbmZzNF9s YWJlbCAqbGFiZWwgPSBOVUxMOw0KPiA+ICsjaWZkZWYgQ09ORklHX05GU19WNF9TRUNVUklUWV9M QUJFTA0KPiA+ICsJc3RydWN0IG5mczRfbGFiZWwgbDsNCj4gPiArI2VuZGlmDQo+ID4gIAlpbnQg ZXJyOw0KPiA+DQo+ID4gICNpZmRlZiBDT05GSUdfTkZTX1Y0X1NFQ1VSSVRZX0xBQkVMDQo+ID4g QEAgLTM2NDAsOSArMzY0OSwxMiBAQCBvdXQ6DQo+ID4gIHN0YXRpYyBpbnQgbmZzNF9wcm9jX21r bm9kKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQo+ID4gIAkJc3Ry dWN0IGlhdHRyICpzYXR0ciwgZGV2X3QgcmRldikNCj4gPiAgew0KPiA+IC0Jc3RydWN0IG5mczRf ZXhjZXB0aW9uIGV4Y2VwdGlvbiA9IHsgfTsNCj4gPiAtCXN0cnVjdCBuZnM0X2xhYmVsIGwsICps YWJlbCA9IE5VTEw7DQo+ID4gIAlpbnQgZXJyOw0KPiA+ICsJc3RydWN0IG5mczRfZXhjZXB0aW9u IGV4Y2VwdGlvbiA9IHsgfTsNCj4gPiArCXN0cnVjdCBuZnM0X2xhYmVsICpsYWJlbCA9IE5VTEw7 DQo+ID4gKyNpZmRlZiBDT05GSUdfTkZTX1Y0X1NFQ1VSSVRZX0xBQkVMDQo+ID4gKwlzdHJ1Y3Qg bmZzNF9sYWJlbCBsOw0KPiA+ICsjZW5kaWYNCj4gPg0KPiA+ICAjaWZkZWYgQ09ORklHX05GU19W NF9TRUNVUklUWV9MQUJFTA0KPiA+ICAJaWYgKG5mc19zZXJ2ZXJfY2FwYWJsZShkaXIsIE5GU19D QVBfU0VDVVJJVFlfTEFCRUwpKSB7DQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmZz X2ZzLmggYi9pbmNsdWRlL2xpbnV4L25mc19mcy5oDQo+ID4gaW5kZXggMmVmMDFmOC4uZjRiYjVj NCAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L25mc19mcy5oDQo+ID4gKysrIGIvaW5j bHVkZS9saW51eC9uZnNfZnMuaA0KPiA+IEBAIC01MDIsOCArNTAyLDggQEAgZXh0ZXJuIHZvaWQg bmZzNF9sYWJlbF9pbml0KHN0cnVjdCBuZnM0X2xhYmVsICopOw0KPiA+ICBleHRlcm4gdm9pZCBu ZnM0X2xhYmVsX2ZyZWUoc3RydWN0IG5mczRfbGFiZWwgKik7DQo+ID4gICNlbHNlDQo+ID4gIHN0 YXRpYyBpbmxpbmUgc3RydWN0IG5mczRfbGFiZWwgKm5mczRfbGFiZWxfYWxsb2MoZ2ZwX3QgZmxh Z3MpIHsNCj4gPiByZXR1cm4gTlVMTDsgfQ0KPiA+IC1zdGF0aWMgaW5saW5lIHZvaWQgbmZzNF9s YWJlbF9pbml0KHN0cnVjdCBuZnM0X2xhYmVsICopIHt9DQo+ID4gLXN0YXRpYyBpbmxpbmUgdm9p ZCBuZnM0X2xhYmVsX2ZyZWUoc3RydWN0IG5mczRfbGFiZWwgKmxhYmVsKSB7fQ0KPiA+ICtzdGF0 aWMgaW5saW5lIHZvaWQgbmZzNF9sYWJlbF9pbml0KHZvaWQgKmxhYmVsKSB7fQ0KPiA+ICtzdGF0 aWMgaW5saW5lIHZvaWQgbmZzNF9sYWJlbF9mcmVlKHZvaWQgKmxhYmVsKSB7fQ0KPiA+ICAjZW5k aWYNCj4gPg0KPiA+ICAvKg0KPiANCj4gVGhhbmtzIGZvciB0aGUgcGF0Y2guIFRoZSBxdWVzdGlv biBJIGhhdmUgaGVyZSBpcyBzaG91bGQgSSB0YWcgU3RldmUncyANCj4gcGF0Y2ggb24gdGhlIGVu ZCBvZiB0aGUgcGF0Y2ggc2V0IG9yIHNob3VsZCBJIGludGVncmF0ZSBpdCBiYWNrIGludG8gdGhl IA0KPiBvcmlnaW5hbCBwYXRjaGVzPw0KDQpJdCBpcyB1cCB0byB5b3UsIGhvd2V2ZXIgaXQgd291 bGQgYmUgbmljZSB0byBoYXZlIHRoZSBmaW5hbCBwYXRjaCBzZXJpZXMNCmJlIGZ1bGx5IGJpc2Vj dGlibGUuDQoNCkNoZWVycw0KICBUcm9uZA0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5G UyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29t DQp3d3cubmV0YXBwLmNvbQ0K
Quoted 153 lines · Trond
Quoted 146 lines · David Quigley
fs/nfs/nfs4proc.c static int nfs4_proc_mkdir(struct inode
Quoted 100 lines · Steve Dickson
This patch cleans up a number compile warnings when the label NFS code exists but is not configured to compile.
Signed-off-by Steve Dickson <[email protected]>--- fs/nfs/nfs4proc.c | 36 ++++++++++++++++++++++++------------ include/linux/nfs_fs.h | 4 ++-- 2 files changed, 26 insertions(+), 14 deletions(-)fs/nfs/nfs4proc.c +4
-3@@ -926,8 +926,8 @@ err_free_label:#ifdef CONFIG_NFS_V4_SECURITY_LABEL if (server->caps &NFS_CAP_SECURITY_LABEL )nfs4_label_free (p->f_label); -#endif err_free_p: +#endif kfree (p); err:dput (parent);@@ -2438,9 +2438,10 @@ static struct inode * nfs4_atomic_open(struct inode *dir, struct nfs_open_context *ctx, int open_flags, struct iattr *attr) { struct nfs4_state *state; -struct nfs4_label l, *label =NULL ; - +struct nfs4_label *label =NULL ; #ifdef CONFIG_NFS_V4_SECURITY_LABEL + struct nfs4_label l; + if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) { struct dentry *dentry = ctx->dentry;fs/nfs/nfs4proc.c +1
-1int error;@@ -3026,8 +3027,8 @@ static int _nfs4_proc_access(struct inode *inode, struct nfs_access_entry *entry#ifdef CONFIG_NFS_V4_SECURITY_LABEL if (server->caps &NFS_CAP_SECURITY_LABEL )nfs4_label_free (res.label); -#endif out: +#endif nfs_free_fattr (res.fattr);return status;}
fs/nfs/nfs4proc.c +4
-1@@ -3105,7 +3106,10 @@ static int nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, int flags) { - struct nfs4_label l, *ilabel = NULL; + struct nfs4_label *ilabel = NULL; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif struct nfs_open_context *ctx;struct nfs4_state *state;fs/nfs/nfs4proc.c +3
-1int status =0 ;@@ -3298,8 +3302,8 @@ static int _nfs4_proc_rename(struct inode *old_dir, struct qstr *old_name,nfs4_label_free (res.old_label);nfs4_label_free (res.new_label); } -#endif out: +#endif return status; }@@ -3418,7 +3422,9 @@ static struct nfs4_createdata *nfs4_alloc_createdata(struct inode *dir, nfs_fattr_init(data->res.fattr); }return data; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL out_free: +#endif kfree (data);return NULL ;}
fs/nfs/nfs4proc.c +3
-3@@ -3474,11 +3480,11 @@ static int nfs4_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page, unsigned int len, struct iattr *sattr) { struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ;int err; - - +struct nfs4_label *label =NULL ; #ifdef CONFIG_NFS_V4_SECURITY_LABEL + struct nfs4_label l; + if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) { err = security_dentry_init_security(dentry, sattr->ia_mode,fs/nfs/nfs4proc.c +0
-0&dentry->d_name, &l.label, &l.len);@@ -3522,7 +3528,10 @@ static int nfs4_proc_mkdir(struct inode*dir,
Quoted 13 lines
fs/nfs/nfs4proc.c +4
-1struct dentry *dentry, struct iattr *sattr) { struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ; +struct nfs4_label *label =NULL ; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif int err;#ifdef
CONFIG_NFS_V4_SECURITY_LABELfs/nfs/nfs4proc.c out: · line 3649
Quoted 1 line
fs/nfs/nfs4proc.c +0
-0@@ -3640,9 +3649,12 @@ out: static int nfs4_proc_mknod(struct inode *dir, struct dentry*dentry,
include/linux/nfs_fs.h extern void nfs4_label_init(struct nfs4_label
Quoted 18 lines
fs/nfs/nfs4proc.c +5
-2struct iattr *sattr, dev_t rdev) { -struct nfs4_exception exception = { }; -struct nfs4_label l, *label =NULL ; int err; +struct nfs4_exception exception = { }; +struct nfs4_label *label =NULL ; +#ifdef CONFIG_NFS_V4_SECURITY_LABEL +struct nfs4_label l; +#endif #ifdef CONFIG_NFS_V4_SECURITY_LABEL if (nfs_server_capable(dir, NFS_CAP_SECURITY_LABEL)) {include/linux/nfs_fs.h +0
-0@@ -502,8 +502,8 @@ extern void nfs4_label_init(struct nfs4_label*);
Quoted 10 lines
include/linux/nfs_fs.h +2
-2extern void nfs4_label_free (struct nfs4_label *);#else static inline struct nfs4_label *nfs4_label_alloc (gfp_t flags) {return NULL ; } -static inline void nfs4_label_init (struct nfs4_label *) {} -static inline void nfs4_label_free (struct nfs4_label *label) {} +static inline void nfs4_label_init (void *label) {} +static inline void nfs4_label_free (void *label) {}#endif Quoted 5 lines
Quoted 1 line
/*
Thanks for the patch. The question I have here is should I tag Steve's patch on the end of the patch set or should I integrate it back into the original patches?
Quoted 5 lines
It is up to you, however it would be nice to have the final patch series be fully bisectible.
Cheers
Trond
Is it not currently bisectible? Before I release I apply each patch one by one and compile between them to make sure they build. Has anyone had problems with it not bisecting properly?
T24gTW9uLCAyMDEyLTEyLTAzIGF0IDE2OjM1IC0wNTAwLCBEYXZpZCBRdWlnbGV5IHdyb3RlOg0K PiBPbiAxMi8wMy8yMDEyIDE2OjI0LCBNeWtsZWJ1c3QsIFRyb25kIHdyb3RlOg0KPiA+IE9uIE1v biwgMjAxMi0xMi0wMyBhdCAxNjoxOCAtMDUwMCwgRGF2aWQgUXVpZ2xleSB3cm90ZToNCj4gPj4g T24gMTIvMDMvMjAxMiAxNToyNCwgU3RldmUgRGlja3NvbiB3cm90ZToNCj4gPj4gPiBUaGlzIHBh dGNoIGNsZWFucyB1cCBhIG51bWJlciBjb21waWxlIHdhcm5pbmdzIHdoZW4gdGhlDQo+ID4+ID4g bGFiZWwgTkZTIGNvZGUgZXhpc3RzIGJ1dCBpcyBub3QgY29uZmlndXJlZCB0byBjb21waWxlLg0K PiA+PiA+DQo+ID4+ID4gU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhh dC5jb20+DQo+ID4+ID4gLS0tDQo+ID4+ID4gIGZzL25mcy9uZnM0cHJvYy5jICAgICAgfCAzNiAr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCj4gPj4gPiAgaW5jbHVkZS9saW51 eC9uZnNfZnMuaCB8ICA0ICsrLS0NCj4gPj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkNCj4gPj4gPg0KPiA+PiA+IGRpZmYgLS1naXQgYS9mcy9u ZnMvbmZzNHByb2MuYyBiL2ZzL25mcy9uZnM0cHJvYy5jDQo+ID4+ID4gaW5kZXggMmM4ZGQ1NS4u MDJlMzMwMyAxMDA2NDQNCj4gPj4gPiAtLS0gYS9mcy9uZnMvbmZzNHByb2MuYw0KPiA+PiA+ICsr KyBiL2ZzL25mcy9uZnM0cHJvYy5jDQo+ID4+ID4gQEAgLTkyNiw4ICs5MjYsOCBAQCBlcnJfZnJl ZV9sYWJlbDoNCj4gPj4gPiAgI2lmZGVmIENPTkZJR19ORlNfVjRfU0VDVVJJVFlfTEFCRUwNCj4g Pj4gPiAgCWlmIChzZXJ2ZXItPmNhcHMgJiBORlNfQ0FQX1NFQ1VSSVRZX0xBQkVMKQ0KPiA+PiA+ ICAJCW5mczRfbGFiZWxfZnJlZShwLT5mX2xhYmVsKTsNCj4gPj4gPiAtI2VuZGlmDQo+ID4+ID4g IGVycl9mcmVlX3A6DQo+ID4+ID4gKyNlbmRpZg0KPiA+PiA+ICAJa2ZyZWUocCk7DQo+ID4+ID4g IGVycjoNCj4gPj4gPiAgCWRwdXQocGFyZW50KTsNCj4gPj4gPiBAQCAtMjQzOCw5ICsyNDM4LDEw IEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKg0KPiA+PiA+ICBuZnM0X2F0b21pY19vcGVuKHN0cnVj dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgbmZzX29wZW5fY29udGV4dCAqY3R4LA0KPiA+PiA+IGludCBv cGVuX2ZsYWdzLCBzdHJ1Y3QgaWF0dHIgKmF0dHIpDQo+ID4+ID4gIHsNCj4gPj4gPiAgCXN0cnVj dCBuZnM0X3N0YXRlICpzdGF0ZTsNCj4gPj4gPiAtCXN0cnVjdCBuZnM0X2xhYmVsIGwsICpsYWJl bCA9IE5VTEw7DQo+ID4+ID4gLQ0KPiA+PiA+ICsJc3RydWN0IG5mczRfbGFiZWwgKmxhYmVsID0g TlVMTDsNCj4gPj4gPiAgI2lmZGVmIENPTkZJR19ORlNfVjRfU0VDVVJJVFlfTEFCRUwNCj4gPj4g PiArCXN0cnVjdCBuZnM0X2xhYmVsIGw7DQo+ID4+ID4gKw0KPiA+PiA+ICAJaWYgKG5mc19zZXJ2 ZXJfY2FwYWJsZShkaXIsIE5GU19DQVBfU0VDVVJJVFlfTEFCRUwpKSB7DQo+ID4+ID4gIAkJc3Ry dWN0IGRlbnRyeSAqZGVudHJ5ID0gY3R4LT5kZW50cnk7DQo+ID4+ID4gIAkJaW50IGVycm9yOw0K PiA+PiA+IEBAIC0zMDI2LDggKzMwMjcsOCBAQCBzdGF0aWMgaW50IF9uZnM0X3Byb2NfYWNjZXNz KHN0cnVjdCBpbm9kZQ0KPiA+PiA+ICppbm9kZSwgc3RydWN0IG5mc19hY2Nlc3NfZW50cnkgKmVu dHJ5DQo+ID4+ID4gICNpZmRlZiBDT05GSUdfTkZTX1Y0X1NFQ1VSSVRZX0xBQkVMDQo+ID4+ID4g IAlpZiAoc2VydmVyLT5jYXBzICYgTkZTX0NBUF9TRUNVUklUWV9MQUJFTCkNCj4gPj4gPiAgCQlu ZnM0X2xhYmVsX2ZyZWUocmVzLmxhYmVsKTsNCj4gPj4gPiAtI2VuZGlmDQo+ID4+ID4gIG91dDoN Cj4gPj4gPiArI2VuZGlmDQo+ID4+ID4gIAluZnNfZnJlZV9mYXR0cihyZXMuZmF0dHIpOw0KPiA+ PiA+ICAJcmV0dXJuIHN0YXR1czsNCj4gPj4gPiAgfQ0KPiA+PiA+IEBAIC0zMTA1LDcgKzMxMDYs MTAgQEAgc3RhdGljIGludA0KPiA+PiA+ICBuZnM0X3Byb2NfY3JlYXRlKHN0cnVjdCBpbm9kZSAq ZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdA0KPiA+PiA+IGlhdHRyICpzYXR0ciwN Cj4gPj4gPiAgCQkgaW50IGZsYWdzKQ0KPiA+PiA+ICB7DQo+ID4+ID4gLQlzdHJ1Y3QgbmZzNF9s YWJlbCBsLCAqaWxhYmVsID0gTlVMTDsNCj4gPj4gPiArCXN0cnVjdCBuZnM0X2xhYmVsICppbGFi ZWwgPSBOVUxMOw0KPiA+PiA+ICsjaWZkZWYgQ09ORklHX05GU19WNF9TRUNVUklUWV9MQUJFTA0K PiA+PiA+ICsJc3RydWN0IG5mczRfbGFiZWwgbDsNCj4gPj4gPiArI2VuZGlmDQo+ID4+ID4gIAlz dHJ1Y3QgbmZzX29wZW5fY29udGV4dCAqY3R4Ow0KPiA+PiA+ICAJc3RydWN0IG5mczRfc3RhdGUg KnN0YXRlOw0KPiA+PiA+ICAJaW50IHN0YXR1cyA9IDA7DQo+ID4+ID4gQEAgLTMyOTgsOCArMzMw Miw4IEBAIHN0YXRpYyBpbnQgX25mczRfcHJvY19yZW5hbWUoc3RydWN0IGlub2RlDQo+ID4+ID4g Km9sZF9kaXIsIHN0cnVjdCBxc3RyICpvbGRfbmFtZSwNCj4gPj4gPiAgCQluZnM0X2xhYmVsX2Zy ZWUocmVzLm9sZF9sYWJlbCk7DQo+ID4+ID4gIAkJbmZzNF9sYWJlbF9mcmVlKHJlcy5uZXdfbGFi ZWwpOw0KPiA+PiA+ICAJfQ0KPiA+PiA+IC0jZW5kaWYNCj4gPj4gPiAgb3V0Og0KPiA+PiA+ICsj ZW5kaWYNCj4gPj4gPiAgCXJldHVybiBzdGF0dXM7DQo+ID4+ID4gIH0NCj4gPj4gPg0KPiA+PiA+ IEBAIC0zNDE4LDcgKzM0MjIsOSBAQCBzdGF0aWMgc3RydWN0IG5mczRfY3JlYXRlZGF0YQ0KPiA+ PiA+ICpuZnM0X2FsbG9jX2NyZWF0ZWRhdGEoc3RydWN0IGlub2RlICpkaXIsDQo+ID4+ID4gIAkJ bmZzX2ZhdHRyX2luaXQoZGF0YS0+cmVzLmZhdHRyKTsNCj4gPj4gPiAgCX0NCj4gPj4gPiAgCXJl dHVybiBkYXRhOw0KPiA+PiA+ICsjaWZkZWYgQ09ORklHX05GU19WNF9TRUNVUklUWV9MQUJFTA0K PiA+PiA+ICBvdXRfZnJlZToNCj4gPj4gPiArI2VuZGlmDQo+ID4+ID4gIAlrZnJlZShkYXRhKTsN Cj4gPj4gPiAgCXJldHVybiBOVUxMOw0KPiA+PiA+ICB9DQo+ID4+ID4gQEAgLTM0NzQsMTEgKzM0 ODAsMTEgQEAgc3RhdGljIGludCBuZnM0X3Byb2Nfc3ltbGluayhzdHJ1Y3QgaW5vZGUNCj4gPj4g PiAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQo+ID4+ID4gIAkJc3RydWN0IHBhZ2UgKnBh Z2UsIHVuc2lnbmVkIGludCBsZW4sIHN0cnVjdCBpYXR0ciAqc2F0dHIpDQo+ID4+ID4gIHsNCj4g Pj4gPiAgCXN0cnVjdCBuZnM0X2V4Y2VwdGlvbiBleGNlcHRpb24gPSB7IH07DQo+ID4+ID4gLQlz dHJ1Y3QgbmZzNF9sYWJlbCBsLCAqbGFiZWwgPSBOVUxMOw0KPiA+PiA+ICAJaW50IGVycjsNCj4g Pj4gPiAtDQo+ID4+ID4gLQ0KPiA+PiA+ICsJc3RydWN0IG5mczRfbGFiZWwgKmxhYmVsID0gTlVM TDsNCj4gPj4gPiAgI2lmZGVmIENPTkZJR19ORlNfVjRfU0VDVVJJVFlfTEFCRUwNCj4gPj4gPiAr CXN0cnVjdCBuZnM0X2xhYmVsIGw7DQo+ID4+ID4gKw0KPiA+PiA+ICAJaWYgKG5mc19zZXJ2ZXJf Y2FwYWJsZShkaXIsIE5GU19DQVBfU0VDVVJJVFlfTEFCRUwpKSB7DQo+ID4+ID4gIAkJZXJyID0g c2VjdXJpdHlfZGVudHJ5X2luaXRfc2VjdXJpdHkoZGVudHJ5LCBzYXR0ci0+aWFfbW9kZSwNCj4g Pj4gPiAgCQkJCQkmZGVudHJ5LT5kX25hbWUsICZsLmxhYmVsLCAmbC5sZW4pOw0KPiA+PiA+IEBA IC0zNTIyLDcgKzM1MjgsMTAgQEAgc3RhdGljIGludCBuZnM0X3Byb2NfbWtkaXIoc3RydWN0IGlu b2RlIA0KPiA+PiAqZGlyLA0KPiA+PiA+IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCj4gPj4gPiAg CQlzdHJ1Y3QgaWF0dHIgKnNhdHRyKQ0KPiA+PiA+ICB7DQo+ID4+ID4gIAlzdHJ1Y3QgbmZzNF9l eGNlcHRpb24gZXhjZXB0aW9uID0geyB9Ow0KPiA+PiA+IC0Jc3RydWN0IG5mczRfbGFiZWwgbCwg KmxhYmVsID0gTlVMTDsNCj4gPj4gPiArCXN0cnVjdCBuZnM0X2xhYmVsICpsYWJlbCA9IE5VTEw7 DQo+ID4+ID4gKyNpZmRlZiBDT05GSUdfTkZTX1Y0X1NFQ1VSSVRZX0xBQkVMDQo+ID4+ID4gKwlz dHJ1Y3QgbmZzNF9sYWJlbCBsOw0KPiA+PiA+ICsjZW5kaWYNCj4gPj4gPiAgCWludCBlcnI7DQo+ ID4+ID4NCj4gPj4gPiAgI2lmZGVmIENPTkZJR19ORlNfVjRfU0VDVVJJVFlfTEFCRUwNCj4gPj4g PiBAQCAtMzY0MCw5ICszNjQ5LDEyIEBAIG91dDoNCj4gPj4gPiAgc3RhdGljIGludCBuZnM0X3By b2NfbWtub2Qoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgDQo+ID4+ICpkZW50cnks DQo+ID4+ID4gIAkJc3RydWN0IGlhdHRyICpzYXR0ciwgZGV2X3QgcmRldikNCj4gPj4gPiAgew0K PiA+PiA+IC0Jc3RydWN0IG5mczRfZXhjZXB0aW9uIGV4Y2VwdGlvbiA9IHsgfTsNCj4gPj4gPiAt CXN0cnVjdCBuZnM0X2xhYmVsIGwsICpsYWJlbCA9IE5VTEw7DQo+ID4+ID4gIAlpbnQgZXJyOw0K PiA+PiA+ICsJc3RydWN0IG5mczRfZXhjZXB0aW9uIGV4Y2VwdGlvbiA9IHsgfTsNCj4gPj4gPiAr CXN0cnVjdCBuZnM0X2xhYmVsICpsYWJlbCA9IE5VTEw7DQo+ID4+ID4gKyNpZmRlZiBDT05GSUdf TkZTX1Y0X1NFQ1VSSVRZX0xBQkVMDQo+ID4+ID4gKwlzdHJ1Y3QgbmZzNF9sYWJlbCBsOw0KPiA+ PiA+ICsjZW5kaWYNCj4gPj4gPg0KPiA+PiA+ICAjaWZkZWYgQ09ORklHX05GU19WNF9TRUNVUklU WV9MQUJFTA0KPiA+PiA+ICAJaWYgKG5mc19zZXJ2ZXJfY2FwYWJsZShkaXIsIE5GU19DQVBfU0VD VVJJVFlfTEFCRUwpKSB7DQo+ID4+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmZzX2Zz LmggYi9pbmNsdWRlL2xpbnV4L25mc19mcy5oDQo+ID4+ID4gaW5kZXggMmVmMDFmOC4uZjRiYjVj NCAxMDA2NDQNCj4gPj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L25mc19mcy5oDQo+ID4+ID4gKysr IGIvaW5jbHVkZS9saW51eC9uZnNfZnMuaA0KPiA+PiA+IEBAIC01MDIsOCArNTAyLDggQEAgZXh0 ZXJuIHZvaWQgbmZzNF9sYWJlbF9pbml0KHN0cnVjdCBuZnM0X2xhYmVsIA0KPiA+PiAqKTsNCj4g Pj4gPiAgZXh0ZXJuIHZvaWQgbmZzNF9sYWJlbF9mcmVlKHN0cnVjdCBuZnM0X2xhYmVsICopOw0K PiA+PiA+ICAjZWxzZQ0KPiA+PiA+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBuZnM0X2xhYmVsICpu ZnM0X2xhYmVsX2FsbG9jKGdmcF90IGZsYWdzKSB7DQo+ID4+ID4gcmV0dXJuIE5VTEw7IH0NCj4g Pj4gPiAtc3RhdGljIGlubGluZSB2b2lkIG5mczRfbGFiZWxfaW5pdChzdHJ1Y3QgbmZzNF9sYWJl bCAqKSB7fQ0KPiA+PiA+IC1zdGF0aWMgaW5saW5lIHZvaWQgbmZzNF9sYWJlbF9mcmVlKHN0cnVj dCBuZnM0X2xhYmVsICpsYWJlbCkge30NCj4gPj4gPiArc3RhdGljIGlubGluZSB2b2lkIG5mczRf bGFiZWxfaW5pdCh2b2lkICpsYWJlbCkge30NCj4gPj4gPiArc3RhdGljIGlubGluZSB2b2lkIG5m czRfbGFiZWxfZnJlZSh2b2lkICpsYWJlbCkge30NCj4gPj4gPiAgI2VuZGlmDQo+ID4+ID4NCj4g Pj4gPiAgLyoNCj4gPj4NCj4gPj4gVGhhbmtzIGZvciB0aGUgcGF0Y2guIFRoZSBxdWVzdGlvbiBJ IGhhdmUgaGVyZSBpcyBzaG91bGQgSSB0YWcgDQo+ID4+IFN0ZXZlJ3MNCj4gPj4gcGF0Y2ggb24g dGhlIGVuZCBvZiB0aGUgcGF0Y2ggc2V0IG9yIHNob3VsZCBJIGludGVncmF0ZSBpdCBiYWNrIGlu dG8gDQo+ID4+IHRoZQ0KPiA+PiBvcmlnaW5hbCBwYXRjaGVzPw0KPiA+DQo+ID4gSXQgaXMgdXAg dG8geW91LCBob3dldmVyIGl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSB0aGUgZmluYWwgcGF0Y2gg DQo+ID4gc2VyaWVzDQo+ID4gYmUgZnVsbHkgYmlzZWN0aWJsZS4NCj4gPg0KPiA+IENoZWVycw0K PiA+ICAgVHJvbmQNCj4gDQo+IElzIGl0IG5vdCBjdXJyZW50bHkgYmlzZWN0aWJsZT8gQmVmb3Jl IEkgcmVsZWFzZSBJIGFwcGx5IGVhY2ggcGF0Y2ggb25lIA0KPiBieSBvbmUgYW5kIGNvbXBpbGUg YmV0d2VlbiB0aGVtIHRvIG1ha2Ugc3VyZSB0aGV5IGJ1aWxkLiBIYXMgYW55b25lIGhhZCANCj4g cHJvYmxlbXMgd2l0aCBpdCBub3QgYmlzZWN0aW5nIHByb3Blcmx5Pw0KDQpOZXZlciBtaW5kOyBJ IG1pc3JlYWQgImNvbXBpbGVyIHdhcm5pbmdzIiBhcyByZWZlcnJpbmcgdG8gY29tcGlsZXINCmVy cm9ycy4gSW4gdGhhdCBjYXNlLCBqdXN0IGFwcGVuZCB0aGlzIHBhdGNoLg0KDQotLSANClRyb25k IE15a2xlYnVzdA0KTGludXggTkZTIGNsaWVudCBtYWludGFpbmVyDQoNCk5ldEFwcA0KVHJvbmQu TXlrbGVidXN0QG5ldGFwcC5jb20NCnd3dy5uZXRhcHAuY29tDQo=