mips unaligned.c bugfix

D.J. Barrow (barrow_dj@yahoo.com)
Fri, 27 Sep 2002 09:26:01 -0700 (PDT)


--0-1071516413-1033143961=:72664
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi Ralf & others,

I found & fixed kernel bug in unaligned.c which was affecting the iptables code
in little mips32 endian.

The patch is against 2.4.17 on oss.sgi.com & should hopefully apply to the latest
kernel.

The fixes code for I did mips 64 is untested, I had no way to test them unfortunately.

An example of the bug is the bug following sequence of mips instructions
beqz v0,<destaddr>
lw v0,(t3)

say reg t3 points to an unaligned address

In the emulation the v0 register was being loaded & modified before
the computation of the destination address ( which depended on v0 )
this was incorrect so I had to save the updating of the v0 register
until the computation of the destination address was done.

=====
D.J. Barrow Linux kernel developer
eMail: dj_barrow@ariasoft.ie
Home: +353-22-47196.
Work: +353-91-758353

__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com
--0-1071516413-1033143961=:72664
Content-Type: application/x-unknown; name="unaligned.diff"
Content-Transfer-Encoding: base64
Content-Description: unaligned.diff
Content-Disposition: attachment; filename="unaligned.diff"

LS0tIGtlcm5lbC5vcmlnL2FyY2gvbWlwcy9rZXJuZWwvdW5hbGlnbmVkLmMJ
VHVlIEphbiAxNSAwNDowODowOSAyMDAyCisrKyBrZXJuZWwvYXJjaC9taXBz
L2tlcm5lbC91bmFsaWduZWQuYwlGcmkgU2VwIDI3IDE2OjU4OjIyIDIwMDIK
QEAgLTgsNiArOCwxMSBAQAogICogQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk4
IGJ5IFJhbGYgQmFlY2hsZQogICogQ29weXJpZ2h0IChDKSAxOTk5IFNpbGlj
b24gR3JhcGhpY3MsIEluYy4KICAqCisgKiBGaXhlczogCisgKiAgICAgICAg
ICAyMDAyIERlbmlzIEpvc2VwaCBCYXJyb3cgPGRqX2JhcnJvd0Bhcmlhc29m
dC5pZT4KKyAqICAgICAgICAgIEZpeCB0byBkb19hZGUgdG8gY29tcHV0ZSBk
ZXN0aW5hdGlvbiBhZGRyZXNzZXMgY29ycmVjdGx5IAorICogICAgICAgICAg
YWZ0ZXIgZml4aW5nIGRlbGF5IHNsb3QgaW5zdHJ1Y3Rpb25zLgorICogCiAg
KiBUaGlzIGZpbGUgY29udGFpbnMgZXhjZXB0aW9uIGhhbmRsZXIgZm9yIGFk
ZHJlc3MgZXJyb3IgZXhjZXB0aW9uIHdpdGggdGhlCiAgKiBzcGVjaWFsIGNh
cGFiaWxpdHkgdG8gZXhlY3V0ZSBmYXVsdGluZyBpbnN0cnVjdGlvbnMgaW4g
c29mdHdhcmUuICBUaGUKICAqIGhhbmRsZXIgZG9lcyBub3QgdHJ5IHRvIGhh
bmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBwcm9ncmFtIGNvdW50ZXIgcG9pbnRz
CkBAIC05NywxMyArMTAyLDE1IEBACiAJCWdvdG8gc2lnYnVzOwogCiBzdGF0
aWMgaW5saW5lIGludCBlbXVsYXRlX2xvYWRfc3RvcmVfaW5zbihzdHJ1Y3Qg
cHRfcmVncyAqcmVncywKLQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVk
IGxvbmcgcGMpCisJdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25n
IHBjLAorCXVuc2lnbmVkIGxvbmcgKipyZWdwdHIsdW5zaWduZWQgbG9uZyAq
bmV3dmFsdWUpCiB7CiAJdW5pb24gbWlwc19pbnN0cnVjdGlvbiBpbnNuOwog
CXVuc2lnbmVkIGxvbmcgdmFsdWUsIGZpeHVwOwogCXVuc2lnbmVkIGludCBy
ZXM7CiAKIAlyZWdzLT5yZWdzWzBdID0gMDsKKwkqcmVncHRyPU5VTEw7CiAJ
LyoKIAkgKiBUaGlzIGxvYWQgbmV2ZXIgZmF1bHRzLgogCSAqLwpAQCAtMTY5
LDcgKzE3Niw4IEBACiAJCQk6ICJyIiAoYWRkciksICJpIiAoLUVGQVVMVCkp
OwogCQlpZiAocmVzKQogCQkJZ290byBmYXVsdDsKLQkJcmVncy0+cmVnc1tp
bnNuLmlfZm9ybWF0LnJ0XSA9IHZhbHVlOworCQkqbmV3dmFsdWU9dmFsdWU7
CisJCSpyZWdwdHI9JnJlZ3MtPnJlZ3NbaW5zbi5pX2Zvcm1hdC5ydF07CiAJ
CXJldHVybiAwOwogCiAJY2FzZSBsd19vcDoKQEAgLTE5Niw3ICsyMDQsOCBA
QAogCQkJOiAiciIgKGFkZHIpLCAiaSIgKC1FRkFVTFQpKTsKIAkJaWYgKHJl
cykKIAkJCWdvdG8gZmF1bHQ7Ci0JCXJlZ3MtPnJlZ3NbaW5zbi5pX2Zvcm1h
dC5ydF0gPSB2YWx1ZTsKKwkJKm5ld3ZhbHVlPXZhbHVlOworCQkqcmVncHRy
PSZyZWdzLT5yZWdzW2luc24uaV9mb3JtYXQucnRdOwogCQlyZXR1cm4gMDsK
IAogCWNhc2UgbGh1X29wOgpAQCAtMjI3LDcgKzIzNiw4IEBACiAJCQk6ICJy
IiAoYWRkciksICJpIiAoLUVGQVVMVCkpOwogCQlpZiAocmVzKQogCQkJZ290
byBmYXVsdDsKLQkJcmVncy0+cmVnc1tpbnNuLmlfZm9ybWF0LnJ0XSA9IHZh
bHVlOworCQkqbmV3dmFsdWU9dmFsdWU7CisJCSpyZWdwdHI9JnJlZ3MtPnJl
Z3NbaW5zbi5pX2Zvcm1hdC5ydF07CiAJCXJldHVybiAwOwogCiAJY2FzZSBs
d3Vfb3A6CkBAIC0zNjUsNyArMzc1LDcgQEAKIAogYXNtbGlua2FnZSB2b2lk
IGRvX2FkZShzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQl1bnNpZ25lZCBs
b25nIHBjOworCXVuc2lnbmVkIGxvbmcgcGMsKnJlZ3B0cixuZXd2YWw7CiAJ
ZXh0ZXJuIGludCBkb19kc2VtdWxyZXQoc3RydWN0IHB0X3JlZ3MgKik7CiAK
IAkvKiAKQEAgLTM5NSw5ICs0MDUsMTggQEAKIAkgKiBEbyBicmFuY2ggZW11
bGF0aW9uIG9ubHkgaWYgd2UgZGlkbid0IGZvcndhcmQgdGhlIGV4Y2VwdGlv
bi4KIAkgKiBUaGlzIGlzIGFsbCBzbyBidXQgdWdseSAuLi4KIAkgKi8KLQlp
ZiAoIWVtdWxhdGVfbG9hZF9zdG9yZV9pbnNuKHJlZ3MsIHJlZ3MtPmNwMF9i
YWR2YWRkciwgcGMpKQorCWlmICghZW11bGF0ZV9sb2FkX3N0b3JlX2luc24o
cmVncywgcmVncy0+Y3AwX2JhZHZhZGRyLCBwYywmcmVncHRyLCZuZXd2YWwp
KQorCXsKIAkJY29tcHV0ZV9yZXR1cm5fZXBjKHJlZ3MpOwotCisgICAgICAg
ICAgICAgICAgLyogV2UgbmVlZCB1c2UgdGhlIHJlZ3B0ciBjb21wbGljYXRp
b24gZm9yIGRlbGF5IHNsb3QgaW5zdHJ1Y3Rpb25zIAorICAgICAgICAgICAg
ICAgICAqIHdoaWNoIGNhbiBtaXNjb21wdXRlIGRlc3RpbmF0aW9uIGFkZHJl
c3NlcworICAgICAgICAgICAgICAgICAqIGUuZy4gY29uc2lkZXIgdGhlIHNl
cXVlbmNlIAorICAgICAgICAgICAgICAgICAqIGJlcXogICAgICAgIHYwLDxk
ZXN0YWRkcj4KKyAgICAgICAgICAgICAgICAgKiBsdyAgICAgICAgICB2MCwo
dDMpIAorICAgICAgICAgICAgICAgICAqLyAKKwkJaWYocmVncHRyKQorCQkJ
KnJlZ3B0cj1uZXd2YWw7CisJfQogI2lmZGVmIENPTkZJR19QUk9DX0ZTCiAJ
dW5hbGlnbmVkX2luc3RydWN0aW9ucysrOwogI2VuZGlmCi0tLSBrZXJuZWwu
b3JpZy9hcmNoL21pcHM2NC9rZXJuZWwvdW5hbGlnbmVkLmMJU2F0IEphbiAy
NiAwNzoyODozNSAyMDAyCisrKyBrZXJuZWwvYXJjaC9taXBzNjQva2VybmVs
L3VuYWxpZ25lZC5jCUZyaSBTZXAgMjcgMTc6MDk6MjggMjAwMgpAQCAtOCw2
ICs4LDExIEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTgsIDE5OTkg
YnkgUmFsZiBCYWVjaGxlCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgU2lsaWNv
biBHcmFwaGljcywgSW5jLgogICoKKyAqIEZpeGVzOiAKKyAqICAgICAgICAg
IDIwMDIgRGVuaXMgSm9zZXBoIEJhcnJvdyA8ZGpfYmFycm93QGFyaWFzb2Z0
LmllPgorICogICAgICAgICAgRml4IHRvIGRvX2FkZSB0byBjb21wdXRlIGRl
c3RpbmF0aW9uIGFkZHJlc3NlcyBjb3JyZWN0bHkgCisgKiAgICAgICAgICBh
ZnRlciBmaXhpbmcgZGVsYXkgc2xvdCBpbnN0cnVjdGlvbnMuCisgKiAKICAq
IFRoaXMgZmlsZSBjb250YWlucyBleGNlcHRpb24gaGFuZGxlciBmb3IgYWRk
cmVzcyBlcnJvciBleGNlcHRpb24gd2l0aCB0aGUKICAqIHNwZWNpYWwgY2Fw
YWJpbGl0eSB0byBleGVjdXRlIGZhdWx0aW5nIGluc3RydWN0aW9ucyBpbiBz
b2Z0d2FyZS4gIFRoZQogICogaGFuZGxlciBkb2VzIG5vdCB0cnkgdG8gaGFu
ZGxlIHRoZSBjYXNlIHdoZW4gdGhlIHByb2dyYW0gY291bnRlciBwb2ludHMK
QEAgLTk3LDEyICsxMDIsMTQgQEAKIAkJZ290byBzaWdidXM7CiAKIHN0YXRp
YyBpbmxpbmUgaW50IGVtdWxhdGVfbG9hZF9zdG9yZV9pbnNuKHN0cnVjdCBw
dF9yZWdzICpyZWdzLAotCXVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQg
bG9uZyBwYykKKwl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcg
cGMsCisgCXVuc2lnbmVkIGxvbmcgKipyZWdwdHIsdW5zaWduZWQgbG9uZyAq
bmV3dmFsdWUpCiB7CiAJdW5pb24gbWlwc19pbnN0cnVjdGlvbiBpbnNuOwog
CXVuc2lnbmVkIGxvbmcgdmFsdWUsIGZpeHVwOwogCiAJcmVncy0+cmVnc1sw
XSA9IDA7CisJKnJlZ3B0cj1OVUxMOwogCS8qCiAJICogVGhpcyBsb2FkIG5l
dmVyIGZhdWx0cy4KIAkgKi8KQEAgLTE2Miw3ICsxNjksOCBAQAogCQkJIi5w
cmV2aW91cyIKIAkJCToiPSZyIiAodmFsdWUpCiAJCQk6InIiIChhZGRyKSwg
ImkiICgmJmZhdWx0KSk7Ci0JCXJlZ3MtPnJlZ3NbaW5zbi5pX2Zvcm1hdC5y
dF0gPSB2YWx1ZTsKKyAJCSpuZXd2YWx1ZT12YWx1ZTsKKyAJCSpyZWdwdHI9
JnJlZ3MtPnJlZ3NbaW5zbi5pX2Zvcm1hdC5ydF07CiAJCXJldHVybiAwOwog
CiAJY2FzZSBsd19vcDoKQEAgLTE4Miw4ICsxOTAsOSBAQAogCQkJIi5wcmV2
aW91cyIKIAkJCToiPSZyIiAodmFsdWUpCiAJCQk6InIiIChhZGRyKSwgImki
ICgmJmZhdWx0KSk7Ci0JCQlyZWdzLT5yZWdzW2luc24uaV9mb3JtYXQucnRd
ID0gdmFsdWU7Ci0JCQlyZXR1cm4gMDsKKyAJCSpuZXd2YWx1ZT12YWx1ZTsK
KyAJCSpyZWdwdHI9JnJlZ3MtPnJlZ3NbaW5zbi5pX2Zvcm1hdC5ydF07CisJ
CXJldHVybiAwOwogCiAJY2FzZSBsaHVfb3A6CiAJCWNoZWNrX2F4cyhwYywg
YWRkciwgMik7CkBAIC0yMDYsNyArMjE1LDggQEAKIAkJCSIucHJldmlvdXMi
CiAJCQk6Ij0mciIgKHZhbHVlKQogCQkJOiJyIiAoYWRkciksICJpIiAoJiZm
YXVsdCkpOwotCQlyZWdzLT5yZWdzW2luc24uaV9mb3JtYXQucnRdID0gdmFs
dWU7CisgCQkqbmV3dmFsdWU9dmFsdWU7CisgCQkqcmVncHRyPSZyZWdzLT5y
ZWdzW2luc24uaV9mb3JtYXQucnRdOwogCQlyZXR1cm4gMDsKIAogCWNhc2Ug
bHd1X29wOgpAQCAtMjI3LDcgKzIzNyw4IEBACiAJCQk6Ij0mciIgKHZhbHVl
KQogCQkJOiJyIiAoYWRkciksICJpIiAoJiZmYXVsdCkpOwogCQl2YWx1ZSAm
PSAweGZmZmZmZmZmOwotCQlyZWdzLT5yZWdzW2luc24uaV9mb3JtYXQucnRd
ID0gdmFsdWU7CisJCSpuZXd2YWx1ZT12YWx1ZTsKKyAJCSpyZWdwdHI9JnJl
Z3MtPnJlZ3NbaW5zbi5pX2Zvcm1hdC5ydF07CiAJCXJldHVybiAwOwogCiAJ
Y2FzZSBsZF9vcDoKQEAgLTI0OSw3ICsyNjAsOCBAQAogCQkJIi5wcmV2aW91
cyIKIAkJCToiPSZyIiAodmFsdWUpCiAJCQk6InIiIChhZGRyKSwgImkiICgm
JmZhdWx0KSk7Ci0JCXJlZ3MtPnJlZ3NbaW5zbi5pX2Zvcm1hdC5ydF0gPSB2
YWx1ZTsKKyAJCSpuZXd2YWx1ZT12YWx1ZTsKKyAJCSpyZWdwdHI9JnJlZ3Mt
PnJlZ3NbaW5zbi5pX2Zvcm1hdC5ydF07CiAJCXJldHVybiAwOwogCiAJY2Fz
ZSBzaF9vcDoKQEAgLTM5OCw5ICs0MTAsMTggQEAKIAkgKiBEbyBicmFuY2gg
ZW11bGF0aW9uIG9ubHkgaWYgd2UgZGlkbid0IGZvcndhcmQgdGhlIGV4Y2Vw
dGlvbi4KIAkgKiBUaGlzIGlzIGFsbCBzbyBidXQgdWdseSAuLi4KIAkgKi8K
LQlpZiAoIWVtdWxhdGVfbG9hZF9zdG9yZV9pbnNuKHJlZ3MsIHJlZ3MtPmNw
MF9iYWR2YWRkciwgcGMpKQorCWlmICghZW11bGF0ZV9sb2FkX3N0b3JlX2lu
c24ocmVncywgcmVncy0+Y3AwX2JhZHZhZGRyLCBwYywmcmVncHRyLCZuZXd2
YWwpKQorCXsKIAkJY29tcHV0ZV9yZXR1cm5fZXBjKHJlZ3MpOwotCisgICAg
ICAgICAgICAgICAgLyogV2UgbmVlZCB1c2UgdGhlIHJlZ3B0ciBjb21wbGlj
YXRpb24gZm9yIGRlbGF5IHNsb3QgaW5zdHJ1Y3Rpb25zIAorICAgICAgICAg
ICAgICAgICAqIHdoaWNoIGNhbiBtaXNjb21wdXRlIGRlc3RpbmF0aW9uIGFk
ZHJlc3NlcworICAgICAgICAgICAgICAgICAqIGUuZy4gY29uc2lkZXIgdGhl
IHNlcXVlbmNlIAorICAgICAgICAgICAgICAgICAqIGJlcXogICAgICAgIHYw
LDxkZXN0YWRkcj4KKyAgICAgICAgICAgICAgICAgKiBsdyAgICAgICAgICB2
MCwodDMpIAorICAgICAgICAgICAgICAgICAqLyAKKwkJaWYocmVncHRyKQor
CQkJKnJlZ3B0cj1uZXd2YWw7CisJfQogI2lmZGVmIENPTkZJR19QUk9DX0ZT
CiAJdW5hbGlnbmVkX2luc3RydWN0aW9ucysrOwogI2VuZGlmCgoKCgoKCgoK
Cg==

--0-1071516413-1033143961=:72664--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/