lkml.org 
[lkml]   [2007]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 7/7] [RFC] APM emulation driver for class batteries
    Hi!

    > > > +static void (*old_apm_get_power_status)(struct apm_power_info*);
    > > > +
    > > > +static int __init apm_battery_init(void)
    > > > +{
    > > > + printk(KERN_INFO "APM Battery Driver\n");
    > > > +
    > > > + old_apm_get_power_status = apm_get_power_status;
    > > > + apm_get_power_status = apm_battery_apm_get_power_status;
    > > > + return 0;
    > > > +}
    > > > +
    > > > +static void __exit apm_battery_exit(void)
    > > > +{
    > > > + apm_get_power_status = old_apm_get_power_status;
    > > > + return;
    > > > +}
    > >
    > > Utterly unsafe. What happens if some other module gets loaded which
    > > does this, and then this module is unloaded followed by the other
    > > module. Result: Oops.
    >
    > Right. And loading two modules which changing apm_get_power_status
    > is a race already. Thus, APM interface needs a mutex.
    >
    > Or pda_power should be marked "bool" in Kconfig, as it is done
    > in arch/arm/common/sharpsl_pm.c. Sharpsl_pm is safe only because it
    > can't be a module.

    Just mark it bool, when you fix it with mutex, you can go back to
    tristate.
    Pavel

    --
    (english) http://www.livejournal.com/~pavelmachek
    (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
    -
    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/

    \
     
     \ /
      Last update: 2007-04-20 10:31    [W:0.021 / U:29.564 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site