All of lore.kernel.org
 help / color / mirror / Atom feed
* O2micro smartcard reader driver.
@ 2006-11-27 17:28 Laurent Bigonville
  2006-11-28 10:13 ` Eric Piel
  2006-11-28 12:19 ` Andreas Jellinghaus
  0 siblings, 2 replies; 11+ messages in thread
From: Laurent Bigonville @ 2006-11-27 17:28 UTC (permalink / raw)
  To: linux-kernel

Hi,

I found a thread (about one month old) about an OZ711Mx (O2micro mmc
card reader) driver, but unfortunately it uses some closed-source
code.[1] :(

But I found no thread about the kernel driver for the O2micro PCMCIA
smartcard reader. So I would like to know if there is any chance that
this driver may be included in the mainline kernel.
The source are LGPL'ed and available via the musclecard website[2]. And
I found a patch to make it compile with kernel > 2.6.13 on the ubuntu
support site[3]. AFAIK the module work, the only issue I have is a
small hang when inserting a card in the reader.

If some one could have a look at this.

Regards

Laurent Bigonville

[1] http://lkml.org/lkml/2006/10/27/57
[2]
ftp://scrdriver:scrdriver@209.19.104.194/Linux/O2Micro_PCMCIA_SCR_203_Linux_Kernel26_OpenSource.tar.gz
[3] https://answers.launchpad.net/distros/ubuntu/+ticket/2535

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-11-27 17:28 O2micro smartcard reader driver Laurent Bigonville
@ 2006-11-28 10:13 ` Eric Piel
  2006-11-28 11:49   ` Oliver Neukum
  2006-11-28 12:19 ` Andreas Jellinghaus
  1 sibling, 1 reply; 11+ messages in thread
From: Eric Piel @ 2006-11-28 10:13 UTC (permalink / raw)
  To: Laurent Bigonville; +Cc: linux-kernel

11/27/2006 06:28 PM, Laurent Bigonville wrote/a écrit:
> Hi,
> 
> I found a thread (about one month old) about an OZ711Mx (O2micro mmc
> card reader) driver, but unfortunately it uses some closed-source
> code.[1] :(
> 
> But I found no thread about the kernel driver for the O2micro PCMCIA
> smartcard reader. So I would like to know if there is any chance that
> this driver may be included in the mainline kernel.
> The source are LGPL'ed and available via the musclecard website[2]. And
> I found a patch to make it compile with kernel > 2.6.13 on the ubuntu
> support site[3]. AFAIK the module work, the only issue I have is a
> small hang when inserting a card in the reader.
> 
> If some one could have a look at this.
> 

Hi,
Actually, this has been discussed on the MUSCLE mailing list (as implied 
in the ubuntu bug report): I've upgraded the driver to be compiled on 
2.6.17. It works fine (even better actually) with 2.6.18 and 2.6.19.

Latest version I've published is there:
http://pieleric.free.fr/o2scr/

Since then, I've cleaned up the code a bit, but no bug fix. I'll try to 
update the version when I'm back home today ;-)

Actually, I've never submitted the driver to the LKML mainly due to lack 
of test. I don't have any usable smartcard to check that everything 
works. If you could confirm it works, or tell me where it fails, it 
would be great!

c u,
Eric

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-11-28 10:13 ` Eric Piel
@ 2006-11-28 11:49   ` Oliver Neukum
  2006-12-12 21:28     ` Eric Piel
  0 siblings, 1 reply; 11+ messages in thread
From: Oliver Neukum @ 2006-11-28 11:49 UTC (permalink / raw)
  To: Eric Piel; +Cc: Laurent Bigonville, linux-kernel


> Latest version I've published is there:
> http://pieleric.free.fr/o2scr/

        case OZSCR_OPEN: /* Request ICC */
            dprintk("OZSCR_OPEN\n");
            ATRLength = ATR_SIZE;
            pRdrExt->IOBase = (PSCR_REGISTERS *) dev->io_base; //XXX necessary?
            pRdrExt->membase = dev->am_base; //XXX necessary?

            pRdrExt->m_SCard.AvailableProtocol = 0;
            pRdrExt->m_SCard.RqstProtocol = 0;
            dprintk("membase:%p\n", pRdrExt->membase);
            dprintk("ioport:0x%03x\n", (unsigned)pRdrExt->IOBase);

            ret = CmdResetReader( pRdrExt, FALSE, ATRBuffer, &ATRLength );
            apdu.LengthOut = ATRLength;

#ifdef PCMCIA_DEBUG
            printk(KERN_DEBUG "Open finished, ATR buffer = ");
            for( ATRLength = 0; ATRLength < apdu.LengthOut; ATRLength++ )
                printk(" [%02X] ", ATRBuffer[ATRLength] );
            printk("\n");
#endif

            memcpy( apdu.DataOut, ATRBuffer, ATRLength );
            ret = copy_to_user((struct ozscr_apdu *)arg, &apdu, sizeof(struct ozscr_apdu));
            break;

1. This needs locking against concurrent ioctls
2. The interpretation of copy_to_user()'s return code is incorrect

            ret = copy_from_user(&apdu, (struct ozscr_apdu *)arg, sizeof(struct ozscr_apdu));
You need to check ret, or you might write shit to the device
            pRdrExt->IOBase = (PSCR_REGISTERS *) dev->io_base;
            pRdrExt->membase = dev->am_base;
            pRdrExt->m_SCard.RqstProtocol = apdu.DataIn[6];
            dprintk("membase:%p\n", pRdrExt->membase);
            dprintk("ioport:0x%03x\n", (unsigned)pRdrExt->IOBase);
            ret = CmdResetReader( pRdrExt, FALSE, ATRBuffer, &ATRLength );

	HTH
		Oliver

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-11-27 17:28 O2micro smartcard reader driver Laurent Bigonville
  2006-11-28 10:13 ` Eric Piel
@ 2006-11-28 12:19 ` Andreas Jellinghaus
  2006-11-28 20:50   ` Laurent Bigonville
  1 sibling, 1 reply; 11+ messages in thread
From: Andreas Jellinghaus @ 2006-11-28 12:19 UTC (permalink / raw)
  To: linux-kernel

maybe post once more, and make clear whether you are looking for:
  - smart card reader support. (smart card as in "digital signature
    card".) o2micro creates such readers, they are usualy usb devices,
    conform to the ccid standard and work fine (e.g. pcsc-lite plus
    ccid driver or openct).
  - smart media card / multi media card reader support (those small
    memory cards used by mobile phones, cameras and so on). o2micro
    creates those too, they are also build in by some vendors, but
    I'm not sure about their situation.

also o2micro might also create pcmcia card readers for either.
maybe let us know what kind of device you exactly have and how
it is connected (if build in... lspci / lsusb would see pci or
usb devices, pcmcia devices are found by the kernel I think).

Regards, Andreas


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-11-28 12:19 ` Andreas Jellinghaus
@ 2006-11-28 20:50   ` Laurent Bigonville
  0 siblings, 0 replies; 11+ messages in thread
From: Laurent Bigonville @ 2006-11-28 20:50 UTC (permalink / raw)
  To: Andreas Jellinghaus; +Cc: linux-kernel

On Tue, 28 Nov 2006 13:19:26 +0100
Andreas Jellinghaus <aj@ciphirelabs.com> wrote:

> maybe post once more, and make clear whether you are looking for:

Yep it's about a smartcard reader. This reader need a kernel module to
be acceded by pcscd.

> 
> also o2micro might also create pcmcia card readers for either.
> maybe let us know what kind of device you exactly have and how
> it is connected (if build in... lspci / lsusb would see pci or
> usb devices, pcmcia devices are found by the kernel I think).

bigon@imladris:~$ lspcmcia -vvvv
Socket 0 Bridge:        [yenta_cardbus]         (bus ID: 0000:02:06.0)
        Configuration:  state: on       ready: unknown
--none--
--none--
Socket 1 Bridge:        [yenta_cardbus]         (bus ID: 0000:02:06.1)
        Configuration:  state: on       ready: unknown
                        Voltage: 5.0V Vcc: 5.0V Vpp: 5.0V
--none--
--none--
Socket 1 Device 0:      [-- no driver --]       (bus ID: 1.0)
        Configuration:  state: on
        Product Name:   O2Micro SmartCardBus Reader V1.0 
        Identification: manf_id: 0xffff card_id: 0x0001
                        prod_id(1): "O2Micro" (0x97299583)
                        prod_id(2): "SmartCardBus Reader" (0xb8501ba9)
                        prod_id(3): "V1.0" (0xe611e659)
                        prod_id(4): --- (---)
Socket 2 Bridge:        [yenta_cardbus]         (bus ID: 0000:02:06.3)
        Configuration:  state: on       ready: unknown
                        Voltage: 5.0V Vcc: 5.0V Vpp: 5.0V
--none--
--none--
Socket 2 Device 0:      [-- no driver --]       (bus ID: 2.0)
        Configuration:  state: on
        Product Name:   O2Micro SmartCardBus Reader V1.0 
        Identification: manf_id: 0xffff card_id: 0x0001
                        prod_id(1): "O2Micro" (0x97299583)
                        prod_id(2): "SmartCardBus Reader" (0xb8501ba9)
                        prod_id(3): "V1.0" (0xe611e659)
                        prod_id(4): --- (---)

02:06.0 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus
Controller 
02:06.1 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus
Controller 
02:06.2 System peripheral: O2 Micro, Inc. OZ711Mx 4-in-1 MemoryCardBus
Accelerator 
02:06.3 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1
MemoryCardBus Controller


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-11-28 11:49   ` Oliver Neukum
@ 2006-12-12 21:28     ` Eric Piel
  2006-12-12 22:05       ` Oliver Neukum
  2007-02-16 23:36       ` Markus Rechberger
  0 siblings, 2 replies; 11+ messages in thread
From: Eric Piel @ 2006-12-12 21:28 UTC (permalink / raw)
  To: Oliver Neukum; +Cc: linux-kernel

28.11.2006 12:49, Oliver Neukum wrote/a écrit:
>> Latest version I've published is there:
>> http://pieleric.free.fr/o2scr/
> 
>         case OZSCR_OPEN: /* Request ICC */
>             dprintk("OZSCR_OPEN\n");
>             ATRLength = ATR_SIZE;
>             pRdrExt->IOBase = (PSCR_REGISTERS *) dev->io_base; //XXX necessary?
>             pRdrExt->membase = dev->am_base; //XXX necessary?
> 
>             pRdrExt->m_SCard.AvailableProtocol = 0;
>             pRdrExt->m_SCard.RqstProtocol = 0;
>             dprintk("membase:%p\n", pRdrExt->membase);
>             dprintk("ioport:0x%03x\n", (unsigned)pRdrExt->IOBase);
> 
>             ret = CmdResetReader( pRdrExt, FALSE, ATRBuffer, &ATRLength );
>             apdu.LengthOut = ATRLength;
> 
> #ifdef PCMCIA_DEBUG
>             printk(KERN_DEBUG "Open finished, ATR buffer = ");
>             for( ATRLength = 0; ATRLength < apdu.LengthOut; ATRLength++ )
>                 printk(" [%02X] ", ATRBuffer[ATRLength] );
>             printk("\n");
> #endif
> 
>             memcpy( apdu.DataOut, ATRBuffer, ATRLength );
>             ret = copy_to_user((struct ozscr_apdu *)arg, &apdu, sizeof(struct ozscr_apdu));
>             break;
> 
> 1. This needs locking against concurrent ioctls
> 2. The interpretation of copy_to_user()'s return code is incorrect
> 

Hi Oliver,

Thanks a lot for reading my code, I didn't even hope that someone would! 
I've corrected the copy_to_user (and copy_from_user) code. However I 
don't know how to do locking for the concurrent ioctls. Indeed, I don't 
think there is anything preventing two programs to call the driver at 
the same time. Unfortunately, I've got no idea how to do the locking and 
surprisingly couldn't find any ioctl code in the kernel doing locking. 
Maybe I've just not looked at the right place, could you give a me some 
hint how to do locking for ioctl's ?

See you,
Eric


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-12-12 21:28     ` Eric Piel
@ 2006-12-12 22:05       ` Oliver Neukum
  2007-02-16 23:36       ` Markus Rechberger
  1 sibling, 0 replies; 11+ messages in thread
From: Oliver Neukum @ 2006-12-12 22:05 UTC (permalink / raw)
  To: Eric Piel; +Cc: linux-kernel

Am Dienstag, 12. Dezember 2006 22:28 schrieb Eric Piel:

Hi

> Thanks a lot for reading my code, I didn't even hope that someone would! 
> I've corrected the copy_to_user (and copy_from_user) code. However I 
> don't know how to do locking for the concurrent ioctls. Indeed, I don't 
> think there is anything preventing two programs to call the driver at 
> the same time. Unfortunately, I've got no idea how to do the locking and 
> surprisingly couldn't find any ioctl code in the kernel doing locking. 
> Maybe I've just not looked at the right place, could you give a me some 
> hint how to do locking for ioctl's ?

I take it back. Reading your code again, it seems to me that it'll
never sleep. In this case you are protected by BKL. If not, you need
to use mutexes, just like eg. in drivers/usb/class/usblp.c

	HTH
		Oliver

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2006-12-12 21:28     ` Eric Piel
  2006-12-12 22:05       ` Oliver Neukum
@ 2007-02-16 23:36       ` Markus Rechberger
  2007-02-17  3:55         ` Markus Rechberger
  1 sibling, 1 reply; 11+ messages in thread
From: Markus Rechberger @ 2007-02-16 23:36 UTC (permalink / raw)
  To: Eric Piel; +Cc: Oliver Neukum, linux-kernel

Hi,

so finally I'm also looking at that driver,
http://pieleric.free.fr/o2scr/
the driver compiles fine, though it doesn't seem to work (unless I'm
doing something wrong here)

dmesg shows up following entries:

pccard: card ejected from slot 1
PCMCIA: socket c160c364: *** DANGER *** unable to remove socket power
pccard: PCMCIA card inserted into slot 1
pcmcia: registering new device pcmcia1.0
pccard: card ejected from slot 1
PCMCIA: socket c160c364: *** DANGER *** unable to remove socket power
pccard: PCMCIA card inserted into slot 1
pcmcia: registering new device pcmcia1.0
pccard: card ejected from slot 1
PCMCIA: socket c160c364: *** DANGER *** unable to remove socket power
pccard: PCMCIA card inserted into slot 1
pcmcia: registering new device pcmcia1.0
OZSCRLX O2Micro SmartCardBus Reader (for kernel >= 2.6.17)

The module for any reason has a usecount value of 1
ozscrlx                21548  1

devicenode /dev/ozscrlx isn't opened anywhere either.

I'll do some further investigations uppon it, I'd also like to see it
directly in the kernel. It would be handy to use for encrypted
filesystems.

Markus


On 12/12/06, Eric Piel <Eric.Piel@tremplin-utc.net> wrote:
> 28.11.2006 12:49, Oliver Neukum wrote/a écrit:
> >> Latest version I've published is there:
> >> http://pieleric.free.fr/o2scr/
> >
> >         case OZSCR_OPEN: /* Request ICC */
> >             dprintk("OZSCR_OPEN\n");
> >             ATRLength = ATR_SIZE;
> >             pRdrExt->IOBase = (PSCR_REGISTERS *) dev->io_base; //XXX
> necessary?
> >             pRdrExt->membase = dev->am_base; //XXX necessary?
> >
> >             pRdrExt->m_SCard.AvailableProtocol = 0;
> >             pRdrExt->m_SCard.RqstProtocol = 0;
> >             dprintk("membase:%p\n", pRdrExt->membase);
> >             dprintk("ioport:0x%03x\n", (unsigned)pRdrExt->IOBase);
> >
> >             ret = CmdResetReader( pRdrExt, FALSE, ATRBuffer, &ATRLength );
> >             apdu.LengthOut = ATRLength;
> >
> > #ifdef PCMCIA_DEBUG
> >             printk(KERN_DEBUG "Open finished, ATR buffer = ");
> >             for( ATRLength = 0; ATRLength < apdu.LengthOut; ATRLength++ )
> >                 printk(" [%02X] ", ATRBuffer[ATRLength] );
> >             printk("\n");
> > #endif
> >
> >             memcpy( apdu.DataOut, ATRBuffer, ATRLength );
> >             ret = copy_to_user((struct ozscr_apdu *)arg, &apdu,
> sizeof(struct ozscr_apdu));
> >             break;
> >
> > 1. This needs locking against concurrent ioctls
> > 2. The interpretation of copy_to_user()'s return code is incorrect
> >
>
> Hi Oliver,
>
> Thanks a lot for reading my code, I didn't even hope that someone would!
> I've corrected the copy_to_user (and copy_from_user) code. However I
> don't know how to do locking for the concurrent ioctls. Indeed, I don't
> think there is anything preventing two programs to call the driver at
> the same time. Unfortunately, I've got no idea how to do the locking and
> surprisingly couldn't find any ioctl code in the kernel doing locking.
> Maybe I've just not looked at the right place, could you give a me some
> hint how to do locking for ioctl's ?
>
> See you,
> Eric
>
> -
> 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/
>


-- 
Markus Rechberger

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2007-02-16 23:36       ` Markus Rechberger
@ 2007-02-17  3:55         ` Markus Rechberger
  2007-02-19 11:04           ` Éric Piel
  0 siblings, 1 reply; 11+ messages in thread
From: Markus Rechberger @ 2007-02-17  3:55 UTC (permalink / raw)
  To: Eric Piel; +Cc: Oliver Neukum, linux-kernel

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

Hi Eric,

I committed your code to linuxtv.org to review and modify it there.
http://linuxtv.org/hg/~mrechberger/chipcardreader

one thing I noticed is the error handling in ozscr_probe.

I'll continue the rest during the next few days, I'd like to see it as
soon as possible in the upstream kernel before some kernel api changes
again which affects your current driver.

Markus

On 2/17/07, Markus Rechberger <mrechberger@gmail.com> wrote:
> Hi,
>
> so finally I'm also looking at that driver,
> http://pieleric.free.fr/o2scr/
> the driver compiles fine, though it doesn't seem to work (unless I'm
> doing something wrong here)
>
> dmesg shows up following entries:
>
> pccard: card ejected from slot 1
> PCMCIA: socket c160c364: *** DANGER *** unable to remove socket power
> pccard: PCMCIA card inserted into slot 1
> pcmcia: registering new device pcmcia1.0
> pccard: card ejected from slot 1
> PCMCIA: socket c160c364: *** DANGER *** unable to remove socket power
> pccard: PCMCIA card inserted into slot 1
> pcmcia: registering new device pcmcia1.0
> pccard: card ejected from slot 1
> PCMCIA: socket c160c364: *** DANGER *** unable to remove socket power
> pccard: PCMCIA card inserted into slot 1
> pcmcia: registering new device pcmcia1.0
> OZSCRLX O2Micro SmartCardBus Reader (for kernel >= 2.6.17)
>
> The module for any reason has a usecount value of 1
> ozscrlx                21548  1
>
> devicenode /dev/ozscrlx isn't opened anywhere either.
>
> I'll do some further investigations uppon it, I'd also like to see it
> directly in the kernel. It would be handy to use for encrypted
> filesystems.
>
> Markus
>
>
> On 12/12/06, Eric Piel <Eric.Piel@tremplin-utc.net> wrote:
> > 28.11.2006 12:49, Oliver Neukum wrote/a écrit:
> > >> Latest version I've published is there:
> > >> http://pieleric.free.fr/o2scr/
> > >
> > >         case OZSCR_OPEN: /* Request ICC */
> > >             dprintk("OZSCR_OPEN\n");
> > >             ATRLength = ATR_SIZE;
> > >             pRdrExt->IOBase = (PSCR_REGISTERS *) dev->io_base; //XXX
> > necessary?
> > >             pRdrExt->membase = dev->am_base; //XXX necessary?
> > >
> > >             pRdrExt->m_SCard.AvailableProtocol = 0;
> > >             pRdrExt->m_SCard.RqstProtocol = 0;
> > >             dprintk("membase:%p\n", pRdrExt->membase);
> > >             dprintk("ioport:0x%03x\n", (unsigned)pRdrExt->IOBase);
> > >
> > >             ret = CmdResetReader( pRdrExt, FALSE, ATRBuffer, &ATRLength
> );
> > >             apdu.LengthOut = ATRLength;
> > >
> > > #ifdef PCMCIA_DEBUG
> > >             printk(KERN_DEBUG "Open finished, ATR buffer = ");
> > >             for( ATRLength = 0; ATRLength < apdu.LengthOut; ATRLength++
> )
> > >                 printk(" [%02X] ", ATRBuffer[ATRLength] );
> > >             printk("\n");
> > > #endif
> > >
> > >             memcpy( apdu.DataOut, ATRBuffer, ATRLength );
> > >             ret = copy_to_user((struct ozscr_apdu *)arg, &apdu,
> > sizeof(struct ozscr_apdu));
> > >             break;
> > >
> > > 1. This needs locking against concurrent ioctls
> > > 2. The interpretation of copy_to_user()'s return code is incorrect
> > >
> >
> > Hi Oliver,
> >
> > Thanks a lot for reading my code, I didn't even hope that someone would!
> > I've corrected the copy_to_user (and copy_from_user) code. However I
> > don't know how to do locking for the concurrent ioctls. Indeed, I don't
> > think there is anything preventing two programs to call the driver at
> > the same time. Unfortunately, I've got no idea how to do the locking and
> > surprisingly couldn't find any ioctl code in the kernel doing locking.
> > Maybe I've just not looked at the right place, could you give a me some
> > hint how to do locking for ioctl's ?
> >
> > See you,
> > Eric
> >
> > -
> > 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/
> >
>
>
> --
> Markus Rechberger
>


-- 
Markus Rechberger

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ozscr_probe.diff --]
[-- Type: text/x-diff; name="ozscr_probe.diff", Size: 1086 bytes --]

--- ozscrlx.c.1	2006-12-12 22:28:24.000000000 +0100
+++ ozscrlx.c	2007-02-17 01:00:46.000000000 +0100
@@ -596,14 +596,14 @@
 	dev = kzalloc(sizeof(struct ozscr_dev_t), GFP_KERNEL);
 	if (dev == NULL) {
 		dprintk("allocate ozscr_dev_t fail\n");
-		goto ErrHandle;
+		goto ErrHandle1;
 	}
 
 	/* Allocate space for private device-specific data */
 	dev->o2scr_reader = kzalloc(sizeof(READER_EXTENSION *), GFP_KERNEL);
 	if (dev->o2scr_reader == NULL) {
 		dprintk("allocate READER_EXTENSION fail\n");
-		goto ErrHandle;
+		goto ErrHandle2;
 	}
 
 	p_dev->priv = dev;
@@ -628,7 +628,7 @@
 
 	ret = ozscr_config(p_dev);
 	if (ret)
-		goto ErrHandle;
+		goto ErrHandle3;
 
 	// it's just so redundant... we could merge those fields together
 	dev->o2scr_reader->IOBase = (PSCR_REGISTERS *) dev->io_base;
@@ -644,11 +644,11 @@
 	dprintk("function complete\n");
 	return 0;
 
-      ErrHandle:
-	/* Free the allocated memory space */
-	if (dev)
-		kfree(dev->o2scr_reader);
+      ErrHandle3:
+	kfree(dev->o2scr_reader);
+      ErrHandle2:
 	kfree(dev);
+      ErrHandle1:
 	return ret;
 }
 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
  2007-02-17  3:55         ` Markus Rechberger
@ 2007-02-19 11:04           ` Éric Piel
  0 siblings, 0 replies; 11+ messages in thread
From: Éric Piel @ 2007-02-19 11:04 UTC (permalink / raw)
  To: Markus Rechberger; +Cc: Oliver Neukum, LKML

02/17/2007 04:55 AM, Markus Rechberger wrote/a écrit:
> Hi Eric,
> 
> I committed your code to linuxtv.org to review and modify it there.
> http://linuxtv.org/hg/~mrechberger/chipcardreader
> 
> one thing I noticed is the error handling in ozscr_probe.
> 
> I'll continue the rest during the next few days, I'd like to see it as
> soon as possible in the upstream kernel before some kernel api changes
> again which affects your current driver.

Hi Markus,

Thank you very much for finding new bugs ;-) Actually, right now I've 
just moved and don't have internet at home which is kind of slowing down 
development... Anyway, I'll check if I have some more fixes on my 
computer than on my website. Also, it would be good to double check some 
lines which I've commented XXX. In particular, IIRC there were some 
suspicious sleep saying it was sleeping a microsecond and sleeping one 
millisecond!

I'm also a bit concerned about the userspace "driver" for pscd which 
comes with the original driver once the patch will be part of the 
default kernel. Maybe this userspace part could become part of the 
pscdlite distribution.

Wrt the module having always a usecount value of 1, it was worrying me 
too at the begining until I noticed it decreased back to 0 once the card 
is "ejected" (pccardctl eject 1). Although a bit surprising, I don't 
think it's a bug, is it?

See you,
Eric


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: O2micro smartcard reader driver.
@ 2007-02-19 12:15 Markus Rechberger
  0 siblings, 0 replies; 11+ messages in thread
From: Markus Rechberger @ 2007-02-19 12:15 UTC (permalink / raw)
  To: Éric Piel, Oliver Neukum, LKML


On 2/19/07, Éric Piel <Eric.Piel@tremplin-utc.net> wrote:
> 02/17/2007 04:55 AM, Markus Rechberger wrote/a écrit:
> > Hi Eric,
> >
> > I committed your code to linuxtv.org to review and modify it there.
> > http://linuxtv.org/hg/~mrechberger/chipcardreader
> >
> > one thing I noticed is the error handling in ozscr_probe.
> >
> > I'll continue the rest during the next few days, I'd like to see it as
> > soon as possible in the upstream kernel before some kernel api changes
> > again which affects your current driver.
>
> Hi Markus,
>
> Thank you very much for finding new bugs ;-) Actually, right now I've
> just moved and don't have internet at home which is kind of slowing down
> development... Anyway, I'll check if I have some more fixes on my
> computer than on my website. Also, it would be good to double check some
> lines which I've commented XXX. In particular, IIRC there were some
> suspicious sleep saying it was sleeping a microsecond and sleeping one
> millisecond!

as user noone cares if it's 1 ns or 1 ms, since that part seems to work
as it is just leave it.

>
> I'm also a bit concerned about the userspace "driver" for pscd which
> comes with the original driver once the patch will be part of the
> default kernel. Maybe this userspace part could become part of the
> pscdlite distribution.
>

I couldn't find the sources of the userspace library, the link on
musclecard.com is dead (and there's no backup on archive.org)

> Wrt the module having always a usecount value of 1, it was worrying me
> too at the begining until I noticed it decreased back to 0 once the card
> is "ejected" (pccardctl eject 1). Although a bit surprising, I don't
> think it's a bug, is it?

this is where the pcmcia/pccard framework bug becomes relevant. The
usecount is no bug, but the lockup (which got explained in the other
mail) is one
>
> See you,
> Eric
>
>


-- 
Markus Rechberger
Operating System Research Center
AMD Saxony LLC & Co. KG




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-02-19 12:15 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-27 17:28 O2micro smartcard reader driver Laurent Bigonville
2006-11-28 10:13 ` Eric Piel
2006-11-28 11:49   ` Oliver Neukum
2006-12-12 21:28     ` Eric Piel
2006-12-12 22:05       ` Oliver Neukum
2007-02-16 23:36       ` Markus Rechberger
2007-02-17  3:55         ` Markus Rechberger
2007-02-19 11:04           ` Éric Piel
2006-11-28 12:19 ` Andreas Jellinghaus
2006-11-28 20:50   ` Laurent Bigonville
2007-02-19 12:15 Markus Rechberger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.