[cpia] [PATCH] Devices do not get de-registered on module removal

Nick Holloway Nick.Holloway@pyrites.org.uk
Wed, 7 Aug 2002 18:26:48 +0100 (BST)


--==UUD_=_1028529605
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

I've been using a parport cpia camera, with the driver compiled as
modules.  I found that if the camera had been used, and the modules
unloaded, the next attempt to load caused an oops.

I discovered that this was due to the camera not getting deregistered
when the module was unloaded.

Several DBGs and recompiles later, I tracked this down to "cam_list"
never containing any entries, because "cpia_add_to_list" doesn't manage
to add the camera to the list (code looks OK at first glance, but doesn't
actually modify "cam_list", but just its local copy).

Here is a patch to use the double-linked list implementation from
"linux/list.h".  This patch is against the current CVS tree.

I've tested cpia_pp with a single camera with kernel 2.4.18.  I've updated
the 2.2.x style deregistration, but I can't test it, as my parport needs
2.4 to be used with the camera.  I've updated cpia_usb, but I also can't
test this.

-- 
 `O O'  | Nick.Holloway@pyrites.org.uk
// ^ \\ | http://www.pyrites.org.uk/

--==UUD_=_1028529605
Content-Type: Application/Octet-Stream
Content-Transfer-Encoding: Base64
Content-Disposition: attachment; filename="cam_list.diff"

PyBjYW1fbGlzdC5kaWZmCkluZGV4OiBjcGlhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jv
b3Qvd2ViY2FtL2NwaWEvbW9kdWxlL2NwaWEuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRp
ZmYgLWIgLXUgLXUgLXIxLjYgY3BpYS5oCi0tLSBjcGlhLmgJMTEgTWF5IDIwMDIgMTg6NTE6MDIg
LTAwMDAJMS42CisrKyBjcGlhLmgJNSBBdWcgMjAwMiAwNjoyNzozMiAtMDAwMApAQCAtNDEsNiAr
NDEsNyBAQAogCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxsaW51eC92aWRl
b2Rldi5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9zbXBfbG9j
ay5oPgogCiBzdHJ1Y3QgY3BpYV9jYW1lcmFfb3BzCkBAIC0yMzYsOCArMjM3LDcgQEAKICNkZWZp
bmUgRlJBTUVfTlVNCTIJLyogZG91YmxlIGJ1ZmZlcmluZyBmb3Igbm93ICovCiAKIHN0cnVjdCBj
YW1fZGF0YSB7Ci0Jc3RydWN0IGNhbV9kYXRhICoqcHJldmlvdXM7Ci0Jc3RydWN0IGNhbV9kYXRh
ICpuZXh0OworCXN0cnVjdCBsaXN0X2hlYWQgY2FtX2RhdGFfbGlzdDsKIAogICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIGJ1c3lfbG9jazsgICAgIC8qIGd1YXJkIGFnYWluc3QgU01QIG11bHRpdGhy
ZWFkaW5nICovCiAJc3RydWN0IGNwaWFfY2FtZXJhX29wcyAqb3BzOwkvKiBsb3dsZXZlbCBkcml2
ZXIgb3BlcmF0aW9ucyAqLwpAQCAtNDE4LDI2ICs0MTgsNiBAQAogICBEQkcoIiUxZCAlMWQgJTFk
ICUxZCAlMWQgJTFkICUxZCAlMWQgXG4iLFwKICAgICAgIChwKSYweDgwPzE6MCwgKHApJjB4NDA/
MTowLCAocCkmMHgyMD8xOjAsIChwKSYweDEwPzE6MCxcCiAgICAgICAgIChwKSYweDA4PzE6MCwg
KHApJjB4MDQ/MTowLCAocCkmMHgwMj8xOjAsIChwKSYweDAxPzE6MCk7Ci0KLXN0YXRpYyBpbmxp
bmUgdm9pZCBjcGlhX2FkZF90b19saXN0KHN0cnVjdCBjYW1fZGF0YSogbCwgc3RydWN0IGNhbV9k
YXRhKiBkcnYpCi17Ci0JZHJ2LT5uZXh0ID0gbDsKLQlkcnYtPnByZXZpb3VzID0gJmw7Ci0JbCA9
IGRydjsKLX0KLQotCi1zdGF0aWMgaW5saW5lIHZvaWQgY3BpYV9yZW1vdmVfZnJvbV9saXN0KHN0
cnVjdCBjYW1fZGF0YSogZHJ2KQotewotCWlmIChkcnYtPnByZXZpb3VzICE9IE5VTEwpIHsKLQkJ
aWYgKGRydi0+bmV4dCAhPSBOVUxMKQotCQkJZHJ2LT5uZXh0LT5wcmV2aW91cyA9IGRydi0+cHJl
dmlvdXM7Ci0JCSooZHJ2LT5wcmV2aW91cykgPSBkcnYtPm5leHQ7Ci0JCWRydi0+cHJldmlvdXMg
PSBOVUxMOwotCQlkcnYtPm5leHQgPSBOVUxMOwotCX0KLX0KLQogCiAjZW5kaWYgLyogX19LRVJO
RUxfXyAqLwogCkluZGV4OiBjcGlhX3BwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qv
d2ViY2FtL2NwaWEvbW9kdWxlL2NwaWFfcHAuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRp
ZmYgLWIgLXUgLXUgLXIxLjUgY3BpYV9wcC5jCi0tLSBjcGlhX3BwLmMJMTAgTWF5IDIwMDIgMDA6
MzY6MTEgLTAwMDAJMS41CisrKyBjcGlhX3BwLmMJNSBBdWcgMjAwMiAwNjoyNzozNCAtMDAwMApA
QCAtMjU2LDggKzI1Niw4IEBACiAJMQogfTsKIAotc3RhdGljIHN0cnVjdCBjYW1fZGF0YSAqY2Ft
X2xpc3Q7Ci1zdGF0aWMgc3BpbmxvY2tfdCBjYW1fbGlzdF9sb2NrX3BwOworc3RhdGljIExJU1Rf
SEVBRChjYW1fbGlzdCk7CitzdGF0aWMgc3BpbmxvY2tfdCBjYW1fbGlzdF9sb2NrX3BwID0gU1BJ
Tl9MT0NLX1VOTE9DS0VEOwogCiAjaWZkZWYgX0NQSUFfREVCVUdfCiAjZGVmaW5lIERFQl9QT1JU
KHBvcnQpIHsgXApAQCAtMTUwNyw3ICsxNTA3LDcgQEAKIAkJcmV0dXJuIC1FTlhJTzsKIAl9CiAJ
c3Bpbl9sb2NrKCAmY2FtX2xpc3RfbG9ja19wcCApOwotCWNwaWFfYWRkX3RvX2xpc3QoY2FtX2xp
c3QsIGNwaWEpOworCWxpc3RfYWRkKCAmY3BpYS0+Y2FtX2RhdGFfbGlzdCwgJmNhbV9saXN0ICk7
CiAJc3Bpbl91bmxvY2soICZjYW1fbGlzdF9sb2NrX3BwICk7CiAKIAlyZXR1cm4gMDsKQEAgLTE1
MTUsMTMgKzE1MTUsMTcgQEAKIAogc3RhdGljIHZvaWQgY3BpYV9wcF9kZXRhY2ggKHN0cnVjdCBw
YXJwb3J0ICpwb3J0KQogeworCXN0cnVjdCBsaXN0X2hlYWQgKnRtcDsKIAlzdHJ1Y3QgY2FtX2Rh
dGEgKmNwaWE7CisJc3RydWN0IHBwX2NhbV9lbnRyeSAqY2FtOwogCiAJc3Bpbl9sb2NrKCAmY2Ft
X2xpc3RfbG9ja19wcCApOwotCWZvcihjcGlhID0gY2FtX2xpc3Q7IGNwaWEgIT0gTlVMTDsgY3Bp
YSA9IGNwaWEtPm5leHQpIHsKLQkJc3RydWN0IHBwX2NhbV9lbnRyeSAqY2FtID0gY3BpYS0+bG93
bGV2ZWxfZGF0YTsKKworCWxpc3RfZm9yX2VhY2ggKHRtcCwgJmNhbV9saXN0KSB7CisJCWNwaWEg
PSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IGNhbV9kYXRhLCBjYW1fZGF0YV9saXN0KTsKKwkJY2Ft
ID0gY3BpYS0+bG93bGV2ZWxfZGF0YTsKIAkJaWYgKGNhbSAmJiBjYW0tPnBvcnQtPm51bWJlciA9
PSBwb3J0LT5udW1iZXIpIHsKLQkJCWNwaWFfcmVtb3ZlX2Zyb21fbGlzdChjcGlhKTsKKwkJCWxp
c3RfZGVsKCZjcGlhLT5jYW1fZGF0YV9saXN0KTsKIAkJCXNwaW5fdW5sb2NrKCAmY2FtX2xpc3Rf
bG9ja19wcCApOwogCQkJCiAjaWZkZWYgQ09ORklHX1ZJREVPX0NQSUFfUFBfRE1BCkBAIC0xNjQ3
LDkgKzE2NTEsNiBAQAogCX0KICNlbmRpZiAvKiBrZXJuZWwgdmVyc2lvbiA+PSAyLjMuMCAqLwog
Ci0JY2FtX2xpc3QgPSBOVUxMOwotCXNwaW5fbG9ja19pbml0KCAmY2FtX2xpc3RfbG9ja19wcCAp
OwotCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE2OTEsOCArMTY5MiwxMiBAQAogI2lmIChMSU5VWF9W
RVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiwzLDApKQogCXBhcnBvcnRfdW5yZWdpc3Rl
cl9kcml2ZXIgKCZjcGlhX3BwX2RyaXZlcik7CiAjZWxzZQotCXdoaWxlKGNhbV9saXN0ICE9IE5V
TEwpIHsKLQkJc3RydWN0IHBwX2NhbV9lbnRyeSAqY2FtID0gY2FtX2xpc3QtPmxvd2xldmVsX2Rh
dGE7CisJc3RydWN0IGxpc3RfaGVhZCAqdG1wOworCXN0cnVjdCBjYW1fZGF0YSAqY3BpYTsKKwlz
dHJ1Y3QgcHBfY2FtX2VudHJ5ICpjYW07CisJbGlzdF9mb3JfZWFjaCAodG1wLCAmY2FtX2xpc3Qp
IHsKKwkJY3BpYSA9IGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgY2FtX2RhdGEsIGNhbV9kYXRhX2xp
c3QpOworCQljYW0gPSBjcGlhLT5sb3dsZXZlbF9kYXRhOwogCQljcGlhX3BwX2RldGFjaChjYW0t
PnBvcnQpOwogCX0KICNlbmRpZgpJbmRleDogY3BpYV91c2IuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3Zzcm9vdC93ZWJjYW0vY3BpYS9tb2R1bGUvY3BpYV91c2IuYyx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS41CmRpZmYgLWIgLXUgLXUgLXIxLjUgY3BpYV91c2IuYwotLS0gY3BpYV91c2IuYwkx
MCBNYXkgMjAwMiAwMDowMDo1MCAtMDAwMAkxLjUKKysrIGNwaWFfdXNiLmMJNSBBdWcgMjAwMiAw
NjoyNzozNSAtMDAwMApAQCAtMTE0LDggKzExNCw4IEBACiAJMAogfTsKIAotc3RhdGljIHN0cnVj
dCBjYW1fZGF0YSAqY2FtX2xpc3Q7Ci1zdGF0aWMgc3BpbmxvY2tfdCBjYW1fbGlzdF9sb2NrX3Vz
YjsKK3N0YXRpYyBMSVNUX0hFQUQoY2FtX2xpc3QpOworc3RhdGljIHNwaW5sb2NrX3QgY2FtX2xp
c3RfbG9ja191c2IgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7CiAKIHN0YXRpYyB2b2lkIGNwaWFfdXNi
X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYikKIHsKQEAgLTU2NSw3ICs1NjUsNyBAQAogCX0KIAog
CXNwaW5fbG9jayggJmNhbV9saXN0X2xvY2tfdXNiICk7Ci0JY3BpYV9hZGRfdG9fbGlzdChjYW1f
bGlzdCwgY2FtKTsKKwlsaXN0X2FkZCggJmNhbS0+Y2FtX2RhdGFfbGlzdCwgJmNhbV9saXN0ICk7
CiAJc3Bpbl91bmxvY2soICZjYW1fbGlzdF9sb2NrX3VzYiApOwogCiAJcmV0dXJuIGNhbTsKQEAg
LTYxNyw3ICs2MTcsNyBAQAogCXN0cnVjdCB1c2JfY3BpYSAqdWNwaWEgPSAoc3RydWN0IHVzYl9j
cGlhICopIGNhbS0+bG93bGV2ZWxfZGF0YTsKICAgCiAJc3Bpbl9sb2NrKCAmY2FtX2xpc3RfbG9j
a191c2IgKTsKLQljcGlhX3JlbW92ZV9mcm9tX2xpc3QoY2FtKTsKKwlsaXN0X2RlbCgmY2FtLT5j
YW1fZGF0YV9saXN0KTsKIAlzcGluX3VubG9jayggJmNhbV9saXN0X2xvY2tfdXNiICk7CiAJCiAJ
LyogRG9uJ3QgZXZlbiB0cnkgdG8gcmVzZXQgdGhlIGFsdHNldHRpbmcgaWYgd2UncmUgZGlzY29u
bmVjdGVkICovCkBAIC02NjQsOCArNjY0LDYgQEAKIHN0YXRpYyBpbnQgX19pbml0IHVzYl9jcGlh
X2luaXQodm9pZCkKICNlbmRpZgogewotCWNhbV9saXN0ID0gTlVMTDsKLQlzcGluX2xvY2tfaW5p
dCgmY2FtX2xpc3RfbG9ja191c2IpOwogCXJldHVybiB1c2JfcmVnaXN0ZXIoJmNwaWFfZHJpdmVy
KTsKIH0KIAo=


--==UUD_=_1028529605--