From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas F Herbert Subject: [PATCH net-next V8 2/2] openvswitch: 802.1ad: Flow handling, actions, and parsing Date: Tue, 5 May 2015 11:51:27 -0400 Message-ID: <1430841087-20764-3-git-send-email-thomasfherbert@gmail.com> References: <1430841087-20764-1-git-send-email-thomasfherbert@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: ccp-HUUA3fb44xqsTnJN9+BGXg@public.gmane.org, dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org, therbert-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, Thomas F Herbert To: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Return-path: In-Reply-To: <1430841087-20764-1-git-send-email-thomasfherbert-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org QWRkIHN1cHBvcnQgZm9yIDgwMi4xYWQgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHB1c2ggYW5k IHBvcCBkb3VibGUKdGFnZ2VkIHZsYW5zLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEYgSGVyYmVy dCA8dGhvbWFzZmhlcmJlcnRAZ21haWwuY29tPgotLS0KIG5ldC9vcGVudnN3aXRjaC9hY3Rpb25z LmMgICAgICB8ICA2ICsrLQogbmV0L29wZW52c3dpdGNoL2Zsb3cuYyAgICAgICAgIHwgODMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogbmV0L29wZW52c3dpdGNoL2Zsb3cu aCAgICAgICAgIHwgIDEgKwogbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIHwgOTQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiA0IGZpbGVzIGNoYW5nZWQs IDE2NSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvb3Bl bnZzd2l0Y2gvYWN0aW9ucy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwppbmRleCBiNDkx YzFjLi4wODMxMDE5IDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCisrKyBi L25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKQEAgLTIxOSw3ICsyMTksOCBAQCBzdGF0aWMgaW50 IHBvcF92bGFuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQog CWludCBlcnI7CiAKIAllcnIgPSBza2Jfdmxhbl9wb3Aoc2tiKTsKLQlpZiAoc2tiX3ZsYW5fdGFn X3ByZXNlbnQoc2tiKSkKKwlpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSAmJgorCSAgICBz a2ItPnByb3RvY29sICE9IGh0b25zKEVUSF9QXzgwMjFRKSkKIAkJaW52YWxpZGF0ZV9mbG93X2tl eShrZXkpOwogCWVsc2UKIAkJa2V5LT5ldGgudGNpID0gMDsKQEAgLTIyOSw3ICsyMzAsOCBAQCBz dGF0aWMgaW50IHBvcF92bGFuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tl eSAqa2V5KQogc3RhdGljIGludCBwdXNoX3ZsYW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IHN3X2Zsb3dfa2V5ICprZXksCiAJCSAgICAgY29uc3Qgc3RydWN0IG92c19hY3Rpb25fcHVzaF92 bGFuICp2bGFuKQogewotCWlmIChza2Jfdmxhbl90YWdfcHJlc2VudChza2IpKQorCWlmIChza2Jf dmxhbl90YWdfcHJlc2VudChza2IpICYmCisJICAgIHNrYi0+cHJvdG9jb2wgIT0gaHRvbnMoRVRI X1BfODAyMVEpKQogCQlpbnZhbGlkYXRlX2Zsb3dfa2V5KGtleSk7CiAJZWxzZQogCQlrZXktPmV0 aC50Y2kgPSB2bGFuLT52bGFuX3RjaTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93 LmMgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5jCmluZGV4IDJkYWNjN2IuLjA0MzA0NjYgMTAwNjQ0 Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93LmMKKysrIGIvbmV0L29wZW52c3dpdGNoL2Zsb3cu YwpAQCAtMjk4LDIxICsyOTgsNzkgQEAgc3RhdGljIGJvb2wgaWNtcDZoZHJfb2soc3RydWN0IHNr X2J1ZmYgKnNrYikKIHN0YXRpYyBpbnQgcGFyc2VfdmxhbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBz dHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSkKIHsKIAlzdHJ1Y3QgcXRhZ19wcmVmaXggewotCQlfX2Jl MTYgZXRoX3R5cGU7IC8qIEVUSF9QXzgwMjFRICovCisJCV9fYmUxNiBldGhfdHlwZTsgLyogRVRI X1BfODAyMVEgIG9yIEVUSF9QXzgwMjFBRCAqLwogCQlfX2JlMTYgdGNpOwogCX07Ci0Jc3RydWN0 IHF0YWdfcHJlZml4ICpxcDsKKwlzdHJ1Y3QgcXRhZ19wcmVmaXggKnFwID0gKHN0cnVjdCBxdGFn X3ByZWZpeCAqKXNrYi0+ZGF0YTsKIAotCWlmICh1bmxpa2VseShza2ItPmxlbiA8IHNpemVvZihz dHJ1Y3QgcXRhZ19wcmVmaXgpICsgc2l6ZW9mKF9fYmUxNikpKQorCXN0cnVjdCBxaW5xdGFnX3By ZWZpeCB7CisJCV9fYmUxNiBldGhfdHlwZTsgLyogRVRIX1BfODAyMVEgIG9yIEVUSF9QXzgwMjFB RCAqLworCQlfX2JlMTYgdGNpOworCQlfX2JlMTYgaW5uZXJfdHBpZDsgLyogRVRIX1BfODAyMVEg Ki8KKwkJX19iZTE2IGN0Y2k7CisJfTsKKworCWlmIChsaWtlbHkoc2tiX3ZsYW5fdGFnX3ByZXNl bnQoc2tiKSkpIHsKKworCQlrZXktPmV0aC50Y2kgPSBodG9ucyhza2ItPnZsYW5fdGNpKTsKKwor CQkvKiBDYXNlIHdoZXJlIHVwc3RyZWFtCisJCSAqIHByb2Nlc3NpbmcgaGFzIGFscmVhZHkgc3Ry aXBwZWQgdGhlIG91dGVyIHZsYW4gdGFnLgorCQkgKi8KKwkJaWYgKHVubGlrZWx5KHNrYi0+dmxh bl9wcm90byA9PSBodG9ucyhFVEhfUF84MDIxQUQpKSkgeworCisJCQlpZiAodW5saWtlbHkoc2ti LT5sZW4gPCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCisJCQkJCXNpemVvZihfX2JlMTYp KSkKKwkJCQlyZXR1cm4gMDsKKworCQkJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxsKHNrYiwK KwkJCQkJCSAgICBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCisJCQkJCQkgICAgc2l6ZW9m KF9fYmUxNikpKSkgeworCQkJCXJldHVybiAtRU5PTUVNOworCQkJfQorCisJCQlpZiAobGlrZWx5 KHFwLT5ldGhfdHlwZSA9PSBodG9ucyhFVEhfUF84MDIxUSkpKSB7CisJCQkJa2V5LT5ldGguY3Rj aSA9IHFwLT50Y2kgfAorCQkJCQkJaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCk7CisJCQkJX19za2Jf cHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpKTsKKwkJCX0KKwkJfQogCQlyZXR1 cm4gMDsKKwl9CiAKLQlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2Yoc3Ry dWN0IHF0YWdfcHJlZml4KSArCi0JCQkJCSBzaXplb2YoX19iZTE2KSkpKQotCQlyZXR1cm4gLUVO T01FTTsKIAotCXFwID0gKHN0cnVjdCBxdGFnX3ByZWZpeCAqKSBza2ItPmRhdGE7Ci0Ja2V5LT5l dGgudGNpID0gcXAtPnRjaSB8IGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpOwotCV9fc2tiX3B1bGwo c2tiLCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSk7CisJaWYgKHFwLT5ldGhfdHlwZSA9PSBo dG9ucyhFVEhfUF84MDIxQUQpKSB7CisJCXN0cnVjdCBxaW5xdGFnX3ByZWZpeCAqcWlucXAgPQor CQkJCQkoc3RydWN0IHFpbnF0YWdfcHJlZml4ICopc2tiLT5kYXRhOworCisJCWlmICh1bmxpa2Vs eShza2ItPmxlbiA8IHNpemVvZihzdHJ1Y3QgcWlucXRhZ19wcmVmaXgpICsKKwkJCQkJc2l6ZW9m KF9fYmUxNikpKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKHVubGlrZWx5KCFwc2tiX21heV9wdWxs KHNrYiwgc2l6ZW9mKHN0cnVjdCBxaW5xdGFnX3ByZWZpeCkgKworCQkJCXNpemVvZihfX2JlMTYp KSkpIHsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJCWtleS0+ZXRoLnRjaSA9IHFpbnFwLT50 Y2kgfCBodG9ucyhWTEFOX1RBR19QUkVTRU5UKTsKKwkJa2V5LT5ldGguY3RjaSA9IHFpbnFwLT5j dGNpIHwgaHRvbnMoVkxBTl9UQUdfUFJFU0VOVCk7CisKKwkJX19za2JfcHVsbChza2IsIHNpemVv ZihzdHJ1Y3QgcWlucXRhZ19wcmVmaXgpKTsKKworCQlyZXR1cm4gMDsKKwl9CisJaWYgKHFwLT5l dGhfdHlwZSA9PSBodG9ucyhFVEhfUF84MDIxUSkpIHsKKworCQlpZiAodW5saWtlbHkoc2tiLT5s ZW4gPCBzaXplb2Yoc3RydWN0IHF0YWdfcHJlZml4KSArCisJCQkJCXNpemVvZihfX2JlMTYpKSkK KwkJCXJldHVybiAtRU5PTUVNOworCisJCWlmICh1bmxpa2VseSghcHNrYl9tYXlfcHVsbChza2Is IHNpemVvZihzdHJ1Y3QgcXRhZ19wcmVmaXgpICsKKwkJCQlzaXplb2YoX19iZTE2KSkpKQorCQkJ cmV0dXJuIDA7CisJCWtleS0+ZXRoLnRjaSA9IHFwLT50Y2kgfCBodG9ucyhWTEFOX1RBR19QUkVT RU5UKTsKKworCQlfX3NrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBxdGFnX3ByZWZpeCkpOwor CX0KIAogCXJldHVybiAwOwogfQpAQCAtNDc0LDkgKzUzMiwxMCBAQCBzdGF0aWMgaW50IGtleV9l eHRyYWN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQogCSAq LwogCiAJa2V5LT5ldGgudGNpID0gMDsKLQlpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSkK LQkJa2V5LT5ldGgudGNpID0gaHRvbnMoc2tiLT52bGFuX3RjaSk7Ci0JZWxzZSBpZiAoZXRoLT5o X3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSkKKwlrZXktPmV0aC5jdGNpID0gMDsKKwlpZiAo KHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpIHx8CisJICAgIChldGgtPmhfcHJvdG8gPT0gaHRv bnMoRVRIX1BfODAyMVEpKSB8fAorCSAgICAoZXRoLT5oX3Byb3RvID09IGh0b25zKEVUSF9QXzgw MjFBRCkpKQogCQlpZiAodW5saWtlbHkocGFyc2Vfdmxhbihza2IsIGtleSkpKQogCQkJcmV0dXJu IC1FTk9NRU07CiAKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93LmggYi9uZXQvb3Bl bnZzd2l0Y2gvZmxvdy5oCmluZGV4IGEwNzZlNDQuLjEwNTdkZTYgMTAwNjQ0Ci0tLSBhL25ldC9v cGVudnN3aXRjaC9mbG93LmgKKysrIGIvbmV0L29wZW52c3dpdGNoL2Zsb3cuaApAQCAtMTM0LDYg KzEzNCw3IEBAIHN0cnVjdCBzd19mbG93X2tleSB7CiAJCXU4ICAgICBzcmNbRVRIX0FMRU5dOwkv KiBFdGhlcm5ldCBzb3VyY2UgYWRkcmVzcy4gKi8KIAkJdTggICAgIGRzdFtFVEhfQUxFTl07CS8q IEV0aGVybmV0IGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCiAJCV9fYmUxNiB0Y2k7CQkvKiAwIGlm IG5vIFZMQU4sIFZMQU5fVEFHX1BSRVNFTlQgc2V0IG90aGVyd2lzZS4gKi8KKwkJX19iZTE2IGN0 Y2k7CQkvKiAwIGlmIG5vIENWTEFOLCBWTEFOX1RBR19QUkVTRU5UIHNldCBvdGhlcndpc2UuICov CiAJCV9fYmUxNiB0eXBlOwkJLyogRXRoZXJuZXQgZnJhbWUgdHlwZS4gKi8KIAl9IGV0aDsKIAl1 bmlvbiB7CmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMgYi9uZXQv b3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKaW5kZXggYzY5MWIxYS4uZWM1MDRjNCAxMDA2NDQK LS0tIGEvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jCisrKyBiL25ldC9vcGVudnN3aXRj aC9mbG93X25ldGxpbmsuYwpAQCAtNzcxLDYgKzc3MSwyOSBAQCBzdGF0aWMgaW50IG1ldGFkYXRh X2Zyb21fbmxhdHRycyhzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsICB1NjQgKmF0dHJzLAog CXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG92c19uZXN0ZWRfdmxhbl9mcm9tX25sYXR0cnMo c3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAorCQkJCQl1NjQgYXR0cnMsIGNvbnN0IHN0cnVj dCBubGF0dHIgKiphLAorCQkJCQlib29sIGlzX21hc2ssIGJvb2wgbG9nKQoreworCS8qIFRoaXMg c2hvdWxkIGJlIG5lc3RlZCBpbm5lciBvciAiY3VzdG9tZXIiIHRjaSIgKi8KKwlpZiAoYXR0cnMg JiAoMSA8PCBPVlNfS0VZX0FUVFJfVkxBTikpIHsKKwkJX19iZTE2IGN0Y2k7CisKKwkJY3RjaSA9 IG5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRUUl9WTEFOXSk7CisJCWlmICghKGN0Y2kgJiBodG9u cyhWTEFOX1RBR19QUkVTRU5UKSkpIHsKKwkJCWlmIChpc19tYXNrKQorCQkJCU9WU19OTEVSUihs b2csICJWTEFOIENUQ0kgbWFzayBkb2VzIG5vdCBoYXZlIGV4YWN0IG1hdGNoIGZvciBWTEFOX1RB R19QUkVTRU5UIGJpdC4iKTsKKwkJCWVsc2UKKwkJCQlPVlNfTkxFUlIobG9nLCAiVkxBTiBDVENJ IGRvZXMgbm90IGhhdmUgVkxBTl9UQUdfUFJFU0VOVCBiaXQgc2V0LiIpOworCisJCQlyZXR1cm4g LUVJTlZBTDsKKwkJfQorCisJCVNXX0ZMT1dfS0VZX1BVVChtYXRjaCwgZXRoLmN0Y2ksIGN0Y2ks IGlzX21hc2spOworCX0KKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvdnNfa2V5X2Zyb21f bmxhdHRycyhzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsIHU2NCBhdHRycywKIAkJCQljb25z dCBzdHJ1Y3QgbmxhdHRyICoqYSwgYm9vbCBpc19tYXNrLAogCQkJCWJvb2wgbG9nKQpAQCAtMTA0 OSw2ICsxMDcyLDggQEAgaW50IG92c19ubGFfZ2V0X21hdGNoKHN0cnVjdCBzd19mbG93X21hdGNo ICptYXRjaCwKIAlzdHJ1Y3QgbmxhdHRyICpuZXdtYXNrID0gTlVMTDsKIAl1NjQga2V5X2F0dHJz ID0gMDsKIAl1NjQgbWFza19hdHRycyA9IDA7CisJdTY0IHZfYXR0cnMgPSAwOworCXU2NCBtYXNr X3ZfYXR0cnMgPSAwOwogCWJvb2wgZW5jYXBfdmFsaWQgPSBmYWxzZTsKIAlpbnQgZXJyOwogCkBA IC0xMDU4LDcgKzEwODMsOSBAQCBpbnQgb3ZzX25sYV9nZXRfbWF0Y2goc3RydWN0IHN3X2Zsb3df bWF0Y2ggKm1hdGNoLAogCiAJaWYgKChrZXlfYXR0cnMgJiAoMSA8PCBPVlNfS0VZX0FUVFJfRVRI RVJORVQpKSAmJgogCSAgICAoa2V5X2F0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQ RSkpICYmCi0JICAgIChubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfRVRIRVJUWVBFXSkgPT0g aHRvbnMoRVRIX1BfODAyMVEpKSkgeworCSAgICAoKG5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRU Ul9FVEhFUlRZUEVdKSA9PSBodG9ucyhFVEhfUF84MDIxUSkpIHx8CisJICAgICAobmxhX2dldF9i ZTE2KGFbT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRV0pID09CisJICAgICAgaHRvbnMoRVRIX1BfODAy MUFEKSkpKSB7CiAJCV9fYmUxNiB0Y2k7CiAKIAkJaWYgKCEoKGtleV9hdHRycyAmICgxIDw8IE9W U19LRVlfQVRUUl9WTEFOKSkgJiYKQEAgLTEwNzQsOSArMTEwMSwzMSBAQCBpbnQgb3ZzX25sYV9n ZXRfbWF0Y2goc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQllbmNhcF92YWxpZCA9IHRy dWU7CiAKIAkJaWYgKHRjaSAmIGh0b25zKFZMQU5fVEFHX1BSRVNFTlQpKSB7Ci0JCQllcnIgPSBw YXJzZV9mbG93X25sYXR0cnMoZW5jYXAsIGEsICZrZXlfYXR0cnMsIGxvZyk7Ci0JCQlpZiAoZXJy KQotCQkJCXJldHVybiBlcnI7CisKKwkJCWlmICh1bmxpa2VseSgobmxhX2dldF9iZTE2KGFbT1ZT X0tFWV9BVFRSX0VUSEVSVFlQRV0pID09CisJCQkgICAgaHRvbnMoRVRIX1BfODAyMUFEKSkpKSB7 CisKKwkJCQllcnIgPSBwYXJzZV9mbG93X25sYXR0cnMoZW5jYXAsIGEsICZ2X2F0dHJzLAorCQkJ CQkJCSBsb2cpOworCQkJCWlmIChlcnIpCisJCQkJCXJldHVybiBlcnI7CisJCQkJaWYgKHZfYXR0 cnMpIHsKKwkJCQkJZXJyID0gb3ZzX25lc3RlZF92bGFuX2Zyb21fbmxhdHRycygKKwkJCQkJCW1h dGNoLCB2X2F0dHJzLCBhLCBmYWxzZSwgbG9nKTsKKwkJCQkJaWYgKGVycikKKwkJCQkJCXJldHVy biBlcnI7CisJCQkJfQorCQkJCS8qIEluc3VyZSB0aGF0IHRjaSBrZXkgYXR0cmlidXRlIGlzbid0 CisJCQkJICogb3ZlcndyaXR0ZW4gYnkgZW5jYXBzdWxhdGVkIGN1c3RvbWVyIHRjaS4KKwkJCQkg Ki8KKwkJCQl2X2F0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfVkxBTik7CisJCQkJa2V5X2F0 dHJzIHw9IHZfYXR0cnM7CisJCQl9IGVsc2UgeworCQkJCWVyciA9IHBhcnNlX2Zsb3dfbmxhdHRy cyhlbmNhcCwgYSwgJmtleV9hdHRycywKKwkJCQkJCQkgbG9nKTsKKwkJCQlpZiAoZXJyKQorCQkJ CQlyZXR1cm4gZXJyOworCQkJfQogCQl9IGVsc2UgaWYgKCF0Y2kpIHsKIAkJCS8qIENvcm5lciBj YXNlIGZvciB0cnVuY2F0ZWQgODAyLjFRIGhlYWRlci4gKi8KIAkJCWlmIChubGFfbGVuKGVuY2Fw KSkgewpAQCAtMTEzMyw2ICsxMTgyLDcgQEAgaW50IG92c19ubGFfZ2V0X21hdGNoKHN0cnVjdCBz d19mbG93X21hdGNoICptYXRjaCwKIAkJaWYgKG1hc2tfYXR0cnMgJiAxIDw8IE9WU19LRVlfQVRU Ul9FTkNBUCkgewogCQkJX19iZTE2IGV0aF90eXBlID0gMDsKIAkJCV9fYmUxNiB0Y2kgPSAwOwor CQkJX19iZTE2IGN0Y2kgPSAwOwogCiAJCQlpZiAoIWVuY2FwX3ZhbGlkKSB7CiAJCQkJT1ZTX05M RVJSKGxvZywgIkVuY2FwIG1hc2sgYXR0cmlidXRlIGlzIHNldCBmb3Igbm9uLVZMQU4gZnJhbWUu Iik7CkBAIC0xMTY3LDYgKzEyMTcsMjMgQEAgaW50IG92c19ubGFfZ2V0X21hdGNoKHN0cnVjdCBz d19mbG93X21hdGNoICptYXRjaCwKIAkJCQllcnIgPSAtRUlOVkFMOwogCQkJCWdvdG8gZnJlZV9u ZXdtYXNrOwogCQkJfQorCQkJZXJyID0gcGFyc2VfZmxvd19tYXNrX25sYXR0cnMoZW5jYXAsIGEs ICZtYXNrX3ZfYXR0cnMsCisJCQkJCQkgICAgICBsb2cpOworCQkJaWYgKGVycikKKwkJCQlnb3Rv IGZyZWVfbmV3bWFzazsKKworCQkJaWYgKG1hc2tfdl9hdHRycyAmICgxVUxMIDw8IE9WU19LRVlf QVRUUl9WTEFOKSkgeworCQkJCWN0Y2kgPSBubGFfZ2V0X2JlMTYoYVtPVlNfS0VZX0FUVFJfVkxB Tl0pOworCQkJCWlmICghKGN0Y2kgJiBodG9ucyhWTEFOX1RBR19QUkVTRU5UKSkpIHsKKwkJCQkJ T1ZTX05MRVJSKGxvZywgIlZMQU4gY3RhZyBwcmVzZW50IGJpdCBtdXN0IGhhdmUgYW4gZXhhY3Qg bWF0Y2ggKGN0Y2lfbWFzaz0leCkuIiwKKwkJCQkJCSAgbnRvaHMoY3RjaSkpOworCQkJCQllcnIg PSAtRUlOVkFMOworCQkJCQlnb3RvIGZyZWVfbmV3bWFzazsKKwkJCQl9CisJCQkJbWFza192X2F0 dHJzICY9IH4oMVVMTCA8PCBPVlNfS0VZX0FUVFJfVkxBTik7CisJCQkJbWFza19hdHRycyB8PSBt YXNrX3ZfYXR0cnM7CisJCQl9CisKIAkJfQogCiAJCWVyciA9IG92c19rZXlfZnJvbV9ubGF0dHJz KG1hdGNoLCBtYXNrX2F0dHJzLCBhLCB0cnVlLCBsb2cpOwpAQCAtMTMzMSw2ICsxMzk4LDIyIEBA IHN0YXRpYyBpbnQgX19vdnNfbmxhX3B1dF9rZXkoY29uc3Qgc3RydWN0IHN3X2Zsb3dfa2V5ICpz d2tleSwKIAkJZW5jYXAgPSBubGFfbmVzdF9zdGFydChza2IsIE9WU19LRVlfQVRUUl9FTkNBUCk7 CiAJCWlmICghc3drZXktPmV0aC50Y2kpCiAJCQlnb3RvIHVuZW5jYXA7CisJfSBlbHNlIGlmIChz d2tleS0+ZXRoLmN0Y2kgfHwgc3drZXktPmV0aC50eXBlID09IGh0b25zKEVUSF9QXzgwMjFBRCkp IHsKKwkJX19iZTE2IGV0aF90eXBlOworCisJCWV0aF90eXBlID0gIWlzX21hc2sgPyBodG9ucyhF VEhfUF84MDIxQUQpIDogaHRvbnMoMHhmZmZmKTsKKwkJaWYgKG5sYV9wdXRfYmUxNihza2IsIE9W U19LRVlfQVRUUl9FVEhFUlRZUEUsIGV0aF90eXBlKSB8fAorCQkgICAgbmxhX3B1dF9iZTE2KHNr YiwgT1ZTX0tFWV9BVFRSX1ZMQU4sIG91dHB1dC0+ZXRoLnRjaSkpCisJCQlnb3RvIG5sYV9wdXRf ZmFpbHVyZTsKKwkJZW5jYXAgPSBubGFfbmVzdF9zdGFydChza2IsIE9WU19LRVlfQVRUUl9FTkNB UCk7CisJCWlmICghc3drZXktPmV0aC50Y2kpCisJCQlnb3RvIHVuZW5jYXA7CisJCS8qIEN1c3Rv bWVyIHRjaSBpcyBuZXN0ZWQgYnV0IHVzZXMgc2FtZSBrZXkgYXR0cmlidXRlLgorCQkgKi8KKwkJ aWYgKG5sYV9wdXRfYmUxNihza2IsIE9WU19LRVlfQVRUUl9WTEFOLCBvdXRwdXQtPmV0aC5jdGNp KSkKKwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOworCQlpZiAoIXN3a2V5LT5ldGguY3RjaSkKKwkJ CWdvdG8gdW5lbmNhcDsKIAl9IGVsc2UKIAkJZW5jYXAgPSBOVUxMOwogCkBAIC0yMDc4LDcgKzIx NjEsOCBAQCBzdGF0aWMgaW50IF9fb3ZzX25sYV9jb3B5X2FjdGlvbnMoY29uc3Qgc3RydWN0IG5s YXR0ciAqYXR0ciwKIAogCQljYXNlIE9WU19BQ1RJT05fQVRUUl9QVVNIX1ZMQU46CiAJCQl2bGFu ID0gbmxhX2RhdGEoYSk7Ci0JCQlpZiAodmxhbi0+dmxhbl90cGlkICE9IGh0b25zKEVUSF9QXzgw MjFRKSkKKwkJCWlmICgodmxhbi0+dmxhbl90cGlkICE9IGh0b25zKEVUSF9QXzgwMjFRKSkgJiYK KwkJCSAgICAodmxhbi0+dmxhbl90cGlkICE9IGh0b25zKEVUSF9QXzgwMjFBRCkpKQogCQkJCXJl dHVybiAtRUlOVkFMOwogCQkJaWYgKCEodmxhbi0+dmxhbl90Y2kgJiBodG9ucyhWTEFOX1RBR19Q UkVTRU5UKSkpCiAJCQkJcmV0dXJuIC1FSU5WQUw7Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2IG1haWxpbmcgbGlzdApkZXZAb3Bl bnZzd2l0Y2gub3JnCmh0dHA6Ly9vcGVudnN3aXRjaC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXYK