Re: What's the meaning of CONFIG_BROKEN_ON_SMP?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 24 Jan 2014 17:43:35 +0800, parmenides said:

> CONFIG_BROKEN_ON_SMP: should be set in the kernel configuration, but isn't.

> I wonder what the meaning of the configuration is. How does it work? Thx!

Drivers (and all other kernel-mode code, actually) need to do proper locking,
so that if there's a race between code running on 2 different CPUs at the same
time, they don't stomp all over each other (consider the case of one CPU trying
to walk a linked list at the same time that another CPU is deleting an entry
from the list - this can leave the first CPU walking down a now corrupted list
following now-stale pointers).

There are a lot of old buggy drivers that don't do proper locking.  In a
few cases, the drivers are *technically* buggy, but the bugs just happen to
be in code that will manage to work anyhow *if there is only one CPU* (for
instance, wrapped in a IRQ-disabled section).  These drivers get BROKEN_ON_SMP
attached, because they can still potentially be useful for people compiling
on architectures that only support 1 processor core, or *need* the driver and
don't care if they only use 1 core of the 4 they have.

The proper fix is, of course, to put proper locking in the driver - but most
BROKEN_ON_SMP drivers are creeping horrorshows straight out of HP Lovecraft,
and nobody wants to invest the resources needed to fix the abandonware driver.

Attachment: pgp2G3Qqb13Ry.pgp
Description: PGP signature

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux