Gentoo’s epic phail

As some people already know I’ve joined the army since 2 months ago, this makes it somewhat difficult for me to keep up with the latest updates for every machine I use.
Today I tried to upgrade a machine running stable (x86) Gentoo Linux after more than 15 days since the last upgrade and I got confronted with an epic Gentoo failure. The problem is clearly described on Odi’s blog. While trying to update e2fsprogs you have to uninstall the old version of them (so far so good), remove sys-libs/ss (that’s also acceptable) and remove sys-libs/com_err which is a dependency for MANY MANY progs, wget among them. So when you remove all these packages and try to install e2fsprogs-libs, wget can’t work anymore due to the missing libcom_err.so.2 file, so you can’t download the updates! You can’t open a new ssh connection to the machine either, so you can’t sftp the libcom_err.so.2 file from another machine! I had success by placing libcom_err.so.2 on a nfs share in another machine, mounting that share from the first machine and trying to re-emerge e2fsprogs-libs since wget could then work.

You can read more about the bug on Gentoo’s bugzilla, here and here.

a) Since portage is NOT ready to handle these kind of situations (according to bugzilla) why did the maintainers mark e2fsprogs-libs as stable ? Why didn’t they do ANY testing at all on the stable branch ?
b) Why wasn’t there a warning/alert/whatever on Gentoo’s website ?
c) It’s been more than 10 days since the problem first appeared and there hasn’t been any official solution about it, either by portage upgrade or by package masking.
d) Should I have googled or searched the forums before upgrading ? Possibly yes…but Gentoo didn’t have such upgrade problems before. I could accept it if problems on Gentoo were created by an upstream ABI breakage like dev-libs/expat had not so long ago, but this looks to me as a totally Gentoo related problem and not an upstream one.

I award Gentoo and e2fsprogs-libs maintainers a sad trombone. Sorry people but this is an epic failure. You deserve it.

Mac OS X tips/reminders

3 simple tips/reminders for stuff I had to deal with while using Mac OS X the last two days…

To get arrows working while inside vim in a remote server one needs to change Mac OS X’s terminal type.
$ cat .profile
TERM=linux

If you use push "redirect-gateway" option in an openvpn server configuration file, you need to add redirect-gateway def1 in your client’s configuration file when using openvpn’s Mac OS X client (Tunnelblick) or else when you close the VPN the previous default route is not restored.

To check on the signal quality of nearby Access Points get AP Grapher.

rxvt-unicode 256 color support with vim

Following my previous post on minimizing the resources that urxvt needs on Gentoo, I tried applying some more patches to it that I found in Gentoo’s bugzilla.
Since that happened a few days ago there was no ebuild for version 9.05 yet. So I created one and applied the patch for the 256 color support.

Here’s my rxvt-unicode ebuild for version 9.05 with 256 color support: rxvt-unicode-9.05.ebuild.
(more…)

Euro 2008 open source tour

451 CAOS Theory has a mini review of what’s going on with open source among the countries that compete in Euro 2008.
It’s quite interesting.
Here’s the link about Greece. It has quite a point…Things don’t look very promising…

The quest for a better rxvt-unicode on Gentoo

Today, while studying I decided to manually run a prelink on my system. For no good reason. Just boredom I guess. The results were pretty interesting though.

Among the output there was a line that made a very big impression to me.
prelink: /usr/bin/urxvt: Cannot prelink against non-PIC shared library //usr//lib/opengl/nvidia/lib/libGL.so.1
Why oh why is libGL.so.1 inside the shared libraries of a terminal ???
(more…)

Speed up multiple ssh connections to the same destination

When you are doing multiple ssh connections to one host there’s a way to speed them up by multiplexing them. When you open the first network connection a special socket is created and then all other connections to the destination machine pass through the first network connection and don’t open any new ones. All that is done via ControlMaster and ControlPath settings for ssh_config.

Example usage:
Inside /etc/ssh/ssh_config
ControlMaster auto
ControlPath /tmp/%r@%h:%p

Firsh ssh connection:
% ssh foobar@foo.bar.gr
Password:
Linux foo.bar.gr 2.6.20.1-1-686 #1 SMP Sun Mar 4 12:44:55 UTC 2007 i686 GNU/Linux
foobar@foo:~$

Second ssh connection:
% ssh -p 22 foobar@foo.bar.gr
Linux foo.bar.gr 2.6.20.1-1-686 #1 SMP Sun Mar 4 12:44:55 UTC 2007 i686 GNU/Linux
foobar@foo:~$

No password is asked and the connection opens up immediately.

kudos to apoikos for telling me about this neat feature in fosscomm :)

Αναλύοντας ένα attack σε honeypot

Ο Δημήτρης έχει μια αρκετά καλή ανάλυση ενός attack σε ένα honeypot που έχει στήσει για πειραματισμούς. Αξίζει να του ρίξετε μια ματιά…

Επιτέλους μας την έπεσαν

44Mbit of multicast traffic can cause a lot more problems than you might think

I was reading my mails today and I bumped into some problems that Internet2 routers faced a couple of days ago with some multicast traffic sent from a host in France. Apparently the host was sending 44Mbit of traffic to a multicast group and that was more than enough to raise a very high load on some routers and cause problems to some firewalls too. Their solution was to either blacklist the host or to disable SAP listen on their routers.

To read more you can check the thread “Another SAP Storm?” from wg-multicast@internet2.edu All things related to multicast .

The same problem appeared on GrNET routers too, but unfortunately they don’t have any public archives of their exchanged mails on the problem. The only way to take a look at this problem from the GrNET point of view is to check on the GrNET router status page, click on the load of some routers and check the spike that appears on Wednesday night in the weekly graph.

Quite interesting…

Mobile view of the internet

This might be old news to most people but I didn’t know it…
You can use a special google url to view websites like mobiles phones do. Try this for example:
http://google.com/gwt/n?u=http://void.gr/kargig/blog/.
It’s quite useful when you want to see how your site looks like from a mobile phone or when you want to use a browser from a terminal like lynx or links (I know you don’t use these browsers but sometimes I do…)
To begin browsing in “mobile view” just go to http://www.google.com/gwt/n and all links you click afterwards will be parsed through the proxy.

And another link I liked was this: http://www.google.com/xhtml. Mobile view of google’s search.

How much does a macbook really cost ?

A friend of mine just ordered a macbook here in Greece. 2.4GHz CPU, 2Gb RAM, 160GB disk. No extras.
Looking at www.applestore.gr this macbook costs 1066E without tax. Tax here in Greece is 19% so the final price would be: 1294,72€
I decided to take a look at other applestores and compare the prices.
applestore.com lists it at 1299$. Using www.xe.com to convert that money to Euros: 843.403€ !! (there might be some kind of taxing missing from here. If you know something please correct me with a comment)
applestore.se lists it at SEK 11.795,00 with tax included. Using www.xe.com to convert that money to Euros: 1,266.38€
applestore.co.uk lists it at £829.00 with tax included. Using www.xe.com to convert that money to Euros: 1,049.31€
applestore.fr lists it at 1.199,00 € with tax included.
applestore.de lists it at 1.199,00 € with tax included.
applestore.it lists it at 1.199,00 € with tax included.
applestore.nl lists it at 1.199,00 € with tax included.
applestore.es lists is at 1.149,00 € with tax included.
applestore.pt lists it at 1.199,00 € with tax included.
applestore.no lists it at kr 10 390,00. Using www.xe.com to convert that money to Euros:1,304.20€
applestore.fi lists it at 1.199,00 € with tax included.

to summarize, from least expensive to most expensive (tax included):
US: 843€
UK:1049€
Spain: 1149€
Finland, France, Germany, Italy, Netherlands, Portugal: 1199€
Sweden: 1266€
Greece: 1294€
Norway: 1304€

Now, should I be happy or sad that in my country it costs a lot more than most other European countries ? It surely costs more than any other country in the Euro zone. If someone takes into account that the minimal monthly payment here in Greece is at 600€, then this macbook here in Greece costs more than 2 months of work. Shouldn’t the price be exactly the same as all other countries in the Euro zone since we are using Euros (€)? What’s the big deal with Greece ? Even the site looks different than all others.. :S

My Desktop (mess)

Since I was tagged by comzeradd to show my Desktop..here it is.

To see what’s all that just click the image and check the notes of flickr.

I tag dstergiou, hsoc, stsimb and thatha :D

Another day, another debian headache

The case is this, a debian server running Debian 4.0 etch has it’s motherboard broken. We send it for replacement but they don’t have another of the same model to send us so they send us a shiny new model. The new model houses a P35 chipset. The latest Debian 4.0 etch kernel is 2.6.18 which does not support the ICH9 chipset that the motherboard has. The result ? The machine can’t find any sata discs attached to it and it can’t boot. Wonderfull!

Asking around for a possible solution I got two types of answers: a) build a newer kernel on my own b) upgrade the whole system to testing (lenny) instead of stable (etch).
As far as solution (a), I was not willing to build a kernel of my own. It’s not that I can’t, it’s the fact that I find it ridiculous for a debian system to have to build a kernel of my own just like I did when I was using slackware. It’s debian, the distribution thought to be the most stable and well polished and and and…there must be an automated way to run a recent proper kernel.
Regarding solution (b), I was not willing to de-stabilize my system. I want and need to run stable versions of services on that server. A lot of people told me that “testing” is very stable. If debian testing is stable enough then they must mark it as stable and push the previous “stable” into the void. While it’s named “testing” I don’t trust it.

The solve the problem, I booted with a beta of the next version of iloog, mounted the debian partition and chrooted to it. Following some help I was given on IRC I added the testing sources to /etc/apt/sources.list:
deb http://ftp.ntua.gr/pub/linux/debian/ stable main contrib non-free
deb-src http://ftp.ntua.gr/pub/linux/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib
deb-src http://security.debian.org/ stable/updates main contrib
deb http://ftp.ntua.gr/pub/linux/debian/ testing main contrib non-free
deb-src http://ftp.ntua.gr/pub/linux/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib
deb-src http://security.debian.org/ testing/updates main contrib

Reading some stuff about “apt pinning” I added the following in /etc/apt/preferences:
Package: *
Pin: release a=stable
Pin-Priority: 700
---blank line---
Package: *
Pin: release a=testing
Pin-Priority: 650

(that —blank line— mark should really be an empty line. due to theming problems with this blog I can’t make it appear properly inside <code> tags)

Then I issued an: aptitude update
Then I got errors like:

Dynamic MMap ran out of room
Error occurred while processing vdr-plugin-skinenigmang (NewVersion1)
Problem with MergeList /var/lib/apt/lists/ftp.ntua.gr_pub_linux_debian_dists_lenny_main_binary-i386_Packages
The package lists or status file could not be parsed or opened.
Couldn’t rebuild package cache

The solution to those were to create another file named /etc/apt/apt.conf with the following inside it:
APT::Cache-Limit "15388608";

Running aptitude update again was fine. Then an apt-cache search linux-image showed me the list of available kernels. I now had a 2.6.24 kernel available. Finally an aptitude install linux-image-2.6.24-1-686 installed the new kernel.
I had to edit the /etc/grub/menu.conf a bit for it to play nicely (due to the chrooting I guess) but afterwards the server booted just fine.

I don’t know whether what I did is good or bad for a debian system. The fact is that it works and aptitude update does not want to upgrade any of my packages to the testing version.

<rant>
Please debian maintainers, if you have finished patching your machines due to the recent openssl vulnerability you created, rename your “stable” release to “ancient” and “testing” to “stable” so we have less trouble running your distro on new hardware. Thanks in advance.
</rant>

pcmanfm 0.4.1.1 ebuild

A new pcmanfm version (0.4.1.1) is out and since there’s no ebuild yet available I made one by modifying a bit the one I found about version 0.3.2.2 on sunrise overlay. I’ve included a patch I found about enabling/disabling deletion confirmations.

Downloads:
pcmanfm 0.4.1.1 ebuild
pcmanfm 0.4.1.1-r1 ebuild
confirm_delete.patch

tested on x86 and ppc (thanks to comzeradd)

enjoy!

P.S. Looks like I didn’t search that well on bugzilla, there are other ebuilds there too: http://bugs.gentoo.org/show_bug.cgi?id=121902

Fotox 42 ebuild

Since the newest available fotox ebuild I found was for version 17, I decided to change it for version 42 which is currently the latest and greatest.

To compile and install it using portage you also need a minor patch I made for it’s build system.
fotox-42.ebuild
fotox-build.patch

kernel fun

I know this has been posted a zillion times again and again…but it’s still a lot of fun:

Swearing? NEVER!
# cd /usr/src/linux; egrep -ir "( fuck)|( shit)|( crap)" *
arch/m68k/mac/config.c: * have to disable interrupts for this. Our IRQ handlers will crap
arch/sparc/mm/srmmu.c: /* Clear any crap from the cache or else... */
arch/sparc/mm/srmmu.c: * this shit off... nice job Fujitsu.
arch/sparc/mm/srmmu.c: /* Clear any crap from the cache or else... */
arch/sparc/lib/checksum.S: * give up. I'm serious, I am going to kick the living shit
arch/sparc/kernel/ptrace.c:/* Fuck me gently with a chainsaw... */
arch/sparc/kernel/process.c: /* fuck me plenty */
arch/sparc/kernel/head.S: /* XXX Fucking Cypress... */
arch/sparc/kernel/sunos_ioctl.c: /* Binary compatibility is good American knowhow fuckin' up. */
arch/sparc/kernel/ebus.c: * Here we list PROMs and systems that are known to supply crap as IRQ numbers.
arch/sparc/kernel/pcic.c: * to shit into regions like that.
arch/um/drivers/daemon_kern.c: /* We will free this pointer. If it contains crap we're burned. */
arch/frv/mb93090-mb00/pci-frv.c: * timer as certain crappy BIOSes forget to set it properly.
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't even give the
arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe ... Don't try to access
arch/mips/pci/fixup-ip32.c: * right if there exists such a broken piece of crap.
arch/mips/pci/pci.c: * timer as certain crappy BIOSes forget to set it properly.
arch/mips/sgi-ip22/ip22-setup.c: * fucking with the memory controller because it needs to know the
arch/mips/kernel/irixelf.c:#if 0 /* XXX No fucking way dude... */
arch/mips/kernel/genex.S: * Big shit, we now may have two dirty primary cache lines for the same
arch/mips/kernel/vmlinux.lds.S: /* ABI crap starts here */
arch/mips/kernel/traps.c: * (Duh, crap, there is someone with a triple R6k machine)
arch/mips/kernel/irixioctl.c: * irixioctl.c: A fucking mess...
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1064 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1065 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1066 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1067 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1068 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1069 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1070 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1071 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1072 XXX AFS shit DC*/
arch/mips/kernel/irix5sys.S: sys irix_unimp 0 /* 1073 XXX AFS shit DC*/
arch/mips/kernel/sysirix.c:/* 2,191 lines of complete and utter shit coming up... */
arch/mips/kernel/irixsig.c: /* XXX do sigstack crapola here... XXX */
arch/v850/Kconfig:# Turn off some random 386 crap that can affect device config
arch/v850/Kconfig: # The crappy-ass zone allocator requires that the start of allocatable
arch/sparc64/mm/ultra.S: * in Microelectronics who refused to fix this shit.
arch/sparc64/solaris/socksys.c: * No shit. WTF is it supposed to do, anyway?
arch/sparc64/kernel/viohs.c: * to be aware of this crap.
arch/sparc64/kernel/iommu_common.c: printk("verify_sglist: Crap, messed up mappings, dumping, iodma at ");
arch/sparc64/kernel/traps.c: /* Shit... */
arch/sparc64/kernel/binfmt_aout32.c: /* Fuck me plenty... */
arch/arm/common/it8152.c: * timer as we don't have even crappy BIOSes to set it properly.
arch/arm/kernel/head.S: * We're trying to keep crap to a minimum; DO NOT add any machine specific
arch/arm/kernel/head.S: * crap here - that's what the boot loader (or in extreme, well justified
arch/cris/arch-v32/drivers/gpio.c: * Removed old crap.
arch/ppc/8xx_io/commproc.c: * XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/ppc/syslib/cpm2_common.c: /* XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/ppc/syslib/ppc405_pci.c: * the kernel try to remap our BAR #1 and fuck up bus
arch/x86/pci/pci.h: u32 miniport_data; /* Crap */
arch/x86/pci/i386.c: * timer as certain crappy BIOSes forget to set it properly.
arch/x86/mach-visws/setup.c: * What lunatic came up with this shit?
arch/x86/mach-voyager/voyager_smp.c: * FIXME: This algorithm is total crap when mixed with SMP
arch/x86/kernel/cpu/cpufreq/powernow-k7.c: * Some Athlon laptops have really fucked PST tables.
arch/x86/kernel/cpu/mcheck/mce_64.c: by default and leave crap in there. Don't log. */
arch/x86/kernel/cpu/mtrr/generic.c:/* Some BIOS's are fucked and don't set all MTRRs the same! */
arch/parisc/kernel/sys_parisc.c:/* Fucking broken ABI */
arch/powerpc/sysdev/commproc.c: * XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/powerpc/sysdev/cpm2_common.c: /* XXX: This is actually crap. CPM_DATAONLY_BASE and
arch/powerpc/platforms/cell/spider-pic.c: * crap and we don't know on which BE iic interrupt we are hooked on at
arch/powerpc/platforms/powermac/smp.c: * ideally, all that crap will be done in prom.c and the CPU left
Documentation/DocBook/kernel-hacking.tmpl: * give up. I'm serious, I am going to kick the living shit
Documentation/DocBook/kernel-locking.tmpl: If you don't see why, please stay the fuck away from my code.
Documentation/scsi/ibmmca.txt: backwards. This confuses the crap out of those heathens who've
Documentation/sound/alsa/ALSA-Configuration.txt: Note: This driver is really crappy. It's a porting from the
Documentation/ManagementStyle:a while, and you'll feel cleansed. Just don't crap too close to home.
drivers/pci/pci-driver.c: * horrible the crap we have to deal with is when we are awake...
drivers/ide/pci/cmd640.c: * These chips are basically fucked by design, and getting this driver
drivers/ide/ide-probe.c: * have the same drive viewed twice. This occurs with crap CF adapters
drivers/ide/ide-io.c: * remove all the ifdef PCI crap
drivers/lguest/lg.h: * There are many cases where the Guest can do something invalid, like pass crap
drivers/char/ip2/i2ellis.c:// !!! Not Used, this is DOS crap, some of you young folks may be interested in
drivers/char/agp/amd64-agp.c: /* Northbridge seems to contain crap. Try the AGP bridge. */
drivers/hwmon/abituguru.c: anyways. If we read sensors/pwms not there we'll just read crap
drivers/video/sstfb.c: and as reading fbinit 6 will return crap (see FBIINIT6_DEFAULT) we just
drivers/video/aty/radeon_pm.c: /* Hrm... same shit, X doesn't do that but I have to */
drivers/video/sis/init301.c: /* This is a piece of typical SiS crap: They code the OEM LCD
drivers/scsi/NCR53C9x.c: * how bad the target and/or ESP fucks things up.
drivers/scsi/NCR53C9x.c: /* shit */
drivers/scsi/NCR53C9x.c: /* Be careful, we could really get fucked during synchronous
drivers/scsi/NCR53C9x.c: /* Crapola, mark it as a slowcmd
drivers/scsi/NCR53C9x.c: /* shit */
drivers/scsi/aha1542.c: * the strategy handler takes care of that crap.
drivers/scsi/aha1542.c: * the strategy handler takes care of that crap.
drivers/scsi/dc395x.c: /* KG: Can this prevent crap sense data ? */
drivers/scsi/scsi_tgt_lib.c:/* TODO: test this crap and replace bio_map_user with new interface maybe */
drivers/scsi/qlogicpti.h:/* Am I fucking pedantic or what? */
drivers/net/3c509.c: * Using disable_irq stops us crapping on other
drivers/net/irda/donauboe.c:toshoboe_gotosleep (struct pci_dev *pci_dev, pm_message_t crap)
drivers/net/sunlance.c: * This was the sun4c killer. Shit, stupid bug.
drivers/net/wan/dscc4.c: * - misc crapectomy.
drivers/net/wan/dscc4.c: * If the driver ends sending crap on the wire, it
drivers/net/wan/cycx_main.c:* 2000/07/13 acme remove useless #ifdef MODULE and crap
drivers/net/wan/z85230.c: * Check if we crapped out.
drivers/net/wan/z85230.c: ct=2; /* Shit happens.. */
drivers/net/declance.c: * v0.007: Big shit. The LANCE seems to use a different DMA mechanism to
drivers/net/sky2.c: * to handle crap frames.
drivers/net/sunhme.c: /* Remember: "Different name, same old buggy as shit hardware." */
drivers/net/sunhme.c:/* Only Sun can take such nice parts and fuck up the programming interface
drivers/net/3c523.c: /* this bit masking stuff is crap. I'd rather have separate
drivers/net/dm9000.c: mdelay(8); /* same shit */
drivers/block/ub.c: * This is typically ENOMEM or some other such shit.
drivers/block/umem.c: * That's crap, since doing that while some partitions are opened
drivers/media/video/ov7670.c: * Weird crap seems to exist in the upper part of
drivers/media/video/bt819.c: BUG? Why does turning the chroma comb on fuck up color?
drivers/media/video/usbvideo/usbvideo.c:/* XXX: this piece of crap really wants some error handling.. */
drivers/media/video/indycam.c: /* Indy specific crap */
drivers/mtd/mtd_blkdevs.c: registered, to prevent the link/init ordering from fucking
drivers/mtd/ubi/scan.c: dbg_bld("using old crappy leb_ver stuff");
drivers/macintosh/windfarm_pm81.c: /* One more crappy race: I don't think we have any guarantee here
drivers/macintosh/windfarm_pm91.c: /* One more crappy race: I don't think we have any guarantee here
drivers/parport/parport_pc.c: * Piles of crap below pretend to be a parser for module and kernel
drivers/md/dm.c: * you this clearly demarcated crap.
drivers/usb/serial/whiteheat.c: * firmware is improved to guard against crap sent to device
drivers/pcmcia/sa1100_jornada720.c: * What is all this crap for?
drivers/watchdog/shwdt.c: * brain-damage, it's managed to fuck things up one step further..
drivers/serial/pmac_zilog.c: * shadows so we don't write crap there before baud rate is
drivers/serial/sunsu.c: * splitting all the OBP probing crap from the UART probing.
drivers/ata/sata_via.c: * SCR registers on vt6420 are pieces of shit and may hang the
drivers/ata/pata_cmd640.c: * Of putting crap on the disk
drivers/ata/pata_acpi.c: /* We always use the 0 slot for crap hardware */
fs/reiserfs/inode.c: /* crap, we are writing to a hole */
fs/partitions/sgi.c: u8 _unused0[48]; /* Device parameter useless crapola.. */
fs/jffs2/dir.c: /* Oh shit. We really ought to make a single node which can do both atomically */
fs/jffs2/super.c: assumes that they're not aligned -- so it emits crappy
fs/jffs2/TODO:2. get_sb()->build_fs()->scan() path... Why get_sb() removes scan()'s crap in
fs/jffs2/gc.c: all the iget() crap anyway */
fs/file_table.c: * Note: This is a crappy interface. It is here to make
fs/namei.c: * have to copy the last component. And all that crap because of
fs/binfmt_aout.c: /* Fuck me plenty... */
include/asm-arm/arch-cl7500/io.h: * GCC is totally crap at loading/storing data. We try to persuade it
include/asm-arm/arch-rpc/io.h: * GCC is totally crap at loading/storing data. We try to persuade it
include/asm-arm/arch-omap/keypad.h: * in order to workaround certain crappy HW designs that produce ghost
include/asm-v850/pgalloc.h:#include <linux /mm.h> /* some crap code expects this */
include/scsi/scsi_host.h: /* legacy crap */
include/linux/netfilter/nf_conntrack_pptp.h:/* crap needed for nf_conntrack_compat.h */
include/linux/netfilter/xt_limit.h: /* Ugly, ugly fucker. */
include/linux/mtd/cfi.h: of optimising away all the crap for 'bankwidth' larger than
include/linux/mtd/cfi.h: of optimising away all the crap for 'bankwidth' larger than
include/linux/cyclomx.h:* 2000/07/13 acme remove crap #if KERNEL_VERSION > blah
include/asm-m68k/sun3xflop.h:/* We don't need no stinkin' I/O port allocation crap. */
include/asm-m68k/sun3ints.h:/* master list of VME vectors -- don't fuck with this */
include/asm-ia64/pal.h:/* Machine Check related crap */
include/asm-mips/mipsprom.h:/* More PROM shit. Probably has to do with VME RMW cycles??? */
include/asm-sparc64/system.h: /* If you fuck with this, update ret_from_syscall code too. */ \
include/asm-sparc64/io.h:/* PC crapola... */
include/asm-sparc/floppy.h:/* We don't need no stinkin' I/O port allocation crap. */
include/asm-cris/arch-v32/spinlock.h: * writers) in interrupt handlers someone fucked up and we'd dead-lock
kernel/cpu.c:/* Crappy recursive lock-takers in cpufreq! Complain loudly about idiots */
lib/vsprintf.c: * Wirzenius wrote this portably, Torvalds fucked it up :-)
net/netfilter/nf_queue.c: /* James M doesn't say fuck enough. */
net/netfilter/xt_hashlimit.c:/* hash table crap */
net/netfilter/nf_conntrack_ftp.c: else { /* Some other crap */
net/ipv4/netfilter/arp_tables.c: duprintf("Valid hook crap: %08X vs %08X\n",
net/ipv4/netfilter/nf_nat_snmp_basic.c: * (And this is the fucking 'basic' method).
net/ipv4/netfilter/ip_tables.c: duprintf("Valid hook crap: %08X vs %08X\n",
net/ipv4/netfilter/ipt_REJECT.c: This means that the iptables jump stack is now crap. We
net/ipv4/tcp_input.c: /* Old crap is replaced with new one. 8)
net/ipv4/tcp_input.c: * all the algo is pure shit and should be replaced
net/ipv4/ah4.c: case 0x85: /* Some "Extended Security" crap. */
net/ipv4/ip_input.c: * new frame it queues. Still crap because
net/ipv4/ip_input.c: /* When the interface is in promisc. mode, drop all the crap
net/ipv6/netfilter/ip6t_REJECT.c: This means that the ip6tables jump stack is now crap. We
net/ipv6/netfilter/ip6_tables.c: duprintf("Valid hook crap: %08X vs %08X\n",
net/core/skbuff.c: /* Fuck, we are miserable poor guys... */
net/irda/irnet/irnet.h: * instances on demand (no /dev/ircommX crap) and to allow linkname
net/appletalk/ddp.c: * Size check to see if ddp->deh_len was crap
net/llc/llc_input.c: * When the interface is in promisc. mode, drop all the crap that it
net/sched/sch_cbq.c: BTW cbq-2.0 has a crap in this
sound/pci/maestro3.c:/* XXX fix this crap up */
sound/pci/es1968.c: /* parallel in crap, see maestro reg 0xC [8-11] */
sound/pci/au88x0/au88x0_core.c: // FIXME: get rid of this crap.
sound/pci/cs46xx/dsp_spos_scb_lib.c: /* !!!! THIS IS A PIECE OF SHIT MADE BY ME !!! */
sound/aoa/soundbus/i2sbus/i2sbus-core.c: * useless crap (ugh ugh ugh). We work around that here by calling
sound/oss/trident.c: * crap documentation), perhaps broken ? */
sound/oss/uart6850.c: * Status: Testing required (no shit -jgarzik)
sound/oss/opl3.c: * What the fuck is going on here? We leave junk in the beginning
sound/oss/i810_audio.c: * Adjust for misclocked crap
sound/oss/i810_audio.c: * Adjust for misclocked crap
sound/oss/via82cxxx_audio.c: /* accounting crap for SNDCTL_DSP_GETxPTR */</linux>

some of those are hilarious :D

Horrible or Terrible
# cd /usr/src/linux; egrep -ir "( horrib)|( terrib)" *
arch/m68k/math-emu/multi_arith.h: probably eliminate this horribly wasteful loop. I will
arch/m68k/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/m68k/kernel/sys_m68k.c: * This is really horribly ugly.
arch/sparc/mm/srmmu.c: * horrible eh? But wait, after extensive testing it appears
arch/sparc/kernel/sys_sparc.c: * This is really horribly ugly.
arch/sparc/kernel/wuf.S:/* Don't touch the above registers or else you die horribly... */
arch/sparc/kernel/pcic.c: * We do not use horrible macros here because we want to
arch/ia64/ia32/ia32priv.h: implementation specific libraries for optimization. Not terribly
arch/um/sys-ppc/Makefile:# the asm link is horrible, and breaks the other targets. This is also
arch/um/sys-i386/syscalls.c: * This is really horribly ugly.
arch/frv/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/frv/kernel/sys_frv.c: * This is really horribly ugly.
arch/mips/kernel/signal.c: * Horribly complicated - with the bloody RM9000 workarounds enabled
arch/mips/kernel/signal32.c: * Horribly complicated - with the bloody RM9000 workarounds enabled
arch/mips/kernel/syscall.c: * This is really horribly ugly.
arch/mips/Kconfig: # Horrible source of confusion. Die, die, die ...
arch/v850/kernel/syscalls.c: * This is really horribly ugly.
arch/sparc64/kernel/sys_sparc.c: * This is really horribly ugly.
arch/arm/plat-omap/gpio.c: * horribly racy, but it's the best we can do to work around
arch/arm/mach-ixp2000/ixdp2x00.c: * a driver on each NPU will try to manage it and we will have horrible
arch/arm/mach-ebsa110/io.c: * Luckily, the work-around for this is not too horrible. See
arch/arm/kernel/sys_arm.c: * This is really horribly ugly.
arch/cris/arch-v10/kernel/kgdb.c: part of the code in order to avoid horrible addressing modes. */
arch/cris/kernel/sys_cris.c: * This is really horribly ugly. (same as arch/i386)
arch/ppc/boot/simple/pci.c: * This isn't a terribly fancy algorithm. I just map the spaces from
arch/ppc/kernel/setup.c: * This 0x10000 offset is a terrible hack but it will go away when
arch/sh/mm/tlb-nommu.c: * Nothing too terribly exciting here ..
arch/sh/drivers/pci/ops-dreamcast.c: * wouldn't make it terribly far through the PCI setup anyways.
arch/sh/oprofile/op_model_sh7750.c: * profile for too horribly long.
arch/sh/kernel/sys_sh.c: * This is really horribly ugly.
arch/x86/kernel/apm_32.c: * disabled before the suspend. Linux used to get terribly confused by that.
arch/x86/kernel/cpu/cyrix.c: * If this breaks your GX1 horribly, please e-mail
arch/x86/kernel/sys_i386_32.c: * This is really horribly ugly.
arch/sh64/kernel/unwind.c: * Finding the previous stack frame isn't horribly straightforward as it is
arch/sh64/kernel/sys_sh64.c: * This is really horribly ugly.
arch/m32r/kernel/sys_m32r.c: * This is really horribly ugly.
arch/h8300/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/h8300/kernel/sys_h8300.c: * This is really horribly ugly.
arch/powerpc/platforms/cell/spider-pic.c: /* Now do the horrible hacks */
arch/powerpc/kernel/syscalls.c: * This is really horribly ugly.
arch/s390/kernel/compat_linux.c: * This is really horribly ugly.
arch/s390/kernel/sys_s390.c: * This is really horribly ugly.
arch/m68knommu/lib/checksum.c: * Fixed some nasty bugs, causing some horrible crashes.
arch/m68knommu/kernel/sys_m68k.c: * This is really horribly ugly.
arch/alpha/kernel/osf_sys.c: a terribly broken way to program.
block/ll_rw_blk.c: * size, something has gone terribly wrong
Documentation/unicode.txt:since they are horribly vendor-specific. This, of course, is an
Documentation/unicode.txt:excellent example of horrible design.
Documentation/lguest/lguest.c: * something went terribly wrong. */
Documentation/DocBook/kernel-hacking.tmpl: it is horrible and worse: division and multiplication does not work
Documentation/DocBook/videobook.tmpl: terribly useful to anyone.
Documentation/scsi/ibmmca.txt: 1) I passed a horrible weekend getting mad with NMIs on kernel 2.2.14 and
Documentation/sound/oss/README.OSS:in some systems but is likely to cause terrible noise on some other systems.
Documentation/sound/oss/README.OSS:are terrible), just modify ssinit.c to use another microcode file and try
Documentation/sound/oss/README.OSS:Some MAD16 based cards may cause feedback, whistle or terrible noise if the
Documentation/svga.txt:off by default as it's a bit unreliable due to terribly bad PC design. If you
Documentation/pci-error-recovery.txt:isn't terribly complex). That means some IRQ latency for other devices
Documentation/filesystems/inotify.txt: Signals are a terrible, terrible interface for file notification. Or for
drivers/pci/pci-driver.c: * horrible the crap we have to deal with is when we are awake...
drivers/pci/hotplug/cpqphp_pci.c:#include "../../../arch/x86/pci/pci.h" /* horrible hack showing how processor dependent we are... */
drivers/pci/hotplug/ibmphp_pci.c: err ("strange, cannot find bus which is supposed to be at the system... something is terribly wrong...\n");
drivers/pci/hotplug/ibmphp_res.c: debug ("something terribly wrong. Cannot find parent bus to the one to remove\n");
drivers/pci/hotplug/cpqphp_core.c:#include "../../../arch/x86/pci/pci.h" /* horrible hack showing how processor dependent we are... */
drivers/lguest/core.c: /* All long-lived kernel loops need to check with this horrible
drivers/char/hvcs.c: * throw us into a horrible recursive echo-echo-echo loop.
drivers/input/serio/i8042-x86ia64io.h: * die horrible death on reboot.
drivers/input/serio/hp_sdc.c: * compared to the CPU. This should not be too horrible most of the time,
drivers/input/mouse/psmouse-base.c: * Some boxes, such as HP nx7400, get terribly confused if mouse
drivers/video/sis/init.c: /* Terrible hack, but correct CRTC data for
drivers/scsi/NCR53C9x.c: /* Check for partial transfers and other horrible events. */
drivers/scsi/NCR53C9x.c: * we could die horribly! I used to have the sg
drivers/scsi/NCR5380.c: seems to be no terribly good way of doing this on a 5380 under all
drivers/scsi/NCR5380.c: the usual exit conditions are not met. Not a terribly clean or
drivers/scsi/aic7xxx_old/aic7xxx.seq: * In order for this to be reliable, we have to do all sorts of horrible
drivers/net/acenic.c: * Nothing terrible happens, if we load wrong size.
drivers/net/ne2k-pci.c: /* This looks like a horrible timing loop, but it should never take
drivers/net/eepro.c:/* The horrible routine to read a word from the serial EEPROM. */
drivers/net/ibm_newemac/core.c: * not terribly harmful)
drivers/net/lib8390.c: * card means that approach caused horrible problems like losing serial data
drivers/net/tulip/winbond-840.c:A horrible bug exists in the transmit FIFO. Apparently the chip doesn't
drivers/net/tulip/winbond-840.c: /* Work around horrible bug in the chip by marking the queue as full
drivers/net/tulip/eeprom.c: return; /* Horrible, impossible failure. */
drivers/net/tulip/eeprom.c: return; /* Horrible, impossible failure. */
drivers/net/tulip/tulip_core.c: /* bugfix: the ASIX must have a burst limit or horrible things happen. */
drivers/net/atl1/atl1_main.c: * Fix TSO; tx performance is horrible with TSO enabled.
drivers/net/wan/z85230.c: * The caller must hold sufficient locks to avoid violating the horrible
drivers/net/3c501.c: Do not purchase this card, even as a joke. It's performance is horrible,
drivers/net/appletalk/ltpc.c: * anything terribly complicated -- it pretends to be an ether device
drivers/media/video/pvrusb2/pvrusb2-sysfs.c: This next batch of horrible preprocessor hackery is needed because the
drivers/mtd/maps/sa1100-flash.c: the chance, and this leads to horrible problems
drivers/atm/firestream.c:/* It seems the ATM forum recommends this horribly complicated 16bit
drivers/pnp/pnpbios/bioscalls.c: * PnP BIOSes are generally not terribly re-entrant.
drivers/pnp/pnpbios/bioscalls.c: * Note that some PnP BIOSes (e.g., on Sony Vaio laptops) die a horrible
drivers/parisc/iommu-helpers.h: /* Horrible hack. For efficiency's sake, dma_sg starts one
drivers/usb/serial/usb-serial.c: /* BEGIN HORRIBLE HACK FOR PL2303 */
drivers/usb/serial/usb-serial.c: /* END HORRIBLE HACK FOR PL2303 */
drivers/isdn/i4l/isdn_net.c: * The solution is horribly but it runs, so what:
drivers/pcmcia/m32r_pcc.c:/* this is horribly ugly... proper locking needs to be done here at
drivers/pcmcia/i82365.c:/* this is horribly ugly... proper locking needs to be done here at
drivers/pcmcia/m32r_cfc.c:/* this is horribly ugly... proper locking needs to be done here at
drivers/serial/8250.h: * Digital did something really horribly wrong with the OUT1 and OUT2
drivers/ata/pata_qdi.c: * libata. While the QDI6580 was 'neat' in 1993 it is no longer terribly
fs/ntfs/layout.h: * horrible thing to do as it would trash our current driver implementation. )-:
fs/ntfs/namei.c: * architectures is usually 64 bits so it would all fail horribly on huge
fs/ocfs2/dlm/dlmmaster.c: /* ok, something horribly messed. kill thyself. */
fs/ocfs2/cluster/quorum.c:/* this is horribly heavy-handed. It should instead flip the file
fs/isofs/inode.c: * then we have horrible problems with trying to piece together
fs/hpfs/dnode.c: * It's easy to read but terrible to write.
fs/namei.c: * checks. It's a horrible hack to work around the braindead sysfs
fs/ncpfs/inode.c: a terrible hack, but I do not know
include/asm-arm/arch-pxa/hardware.h: especially if it is a variable, otherwise horrible code will result. */
include/asm-arm/arch-s3c2410/irqs.h: * and we don't end up having to do horrible things to the
include/asm-x86/apicdef_64.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm-x86/string_32.h: * This looks horribly ugly, but the compiler can optimize it totally,
include/asm-x86/apicdef_32.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm/apicdef_64.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm/string_32.h: * This looks horribly ugly, but the compiler can optimize it totally,
include/asm/apicdef_32.h: * the local APIC register structure, memory mapped. Not terribly well
include/asm-v850/bitops.h: to use a real constant value. This is horrible, and ultimately
include/asm-v850/processor.h: * The only places this is used seem to be horrible bletcherous kludges,
include/asm-xtensa/system.h: * This only works if the compiler isn't horribly bad at optimizing.
include/linux/dccp.h: This mapping is horrible, but TCP has
include/linux/serialP.h: * Digital did something really horribly wrong with the OUT1 and OUT2
include/linux/sunrpc/svc.h: * change the number of threads. Horrible, but there it is.
include/linux/bitmap.h: * Otherwise many inlines will generate horrible code.
include/asm-m68k/page.h:/* This #define is a horrible hack to suppress lots of warnings. --m */
include/asm-ia64/elf.h: implementation specific libraries for optimization. Not terribly
include/asm-mips/dma.h:/* Horrible hack to have a correct DMA window on IP22 */
include/asm-sparc/io-unit.h: * XXX some horrible hwbugs though, so be careful. -DaveM
mm/slob.c: * however to avoid the horrible mess in include/linux/mm_types.h, we'll
mm/memory.c: * There's a horrible special case to handle copy-on-write
mm/truncate.c: * the VM. Can you say "ext3 is horribly ugly"? Tought you could.
net/netfilter/nf_conntrack_extend.c:/* Horrible trick to figure out smallest amount worth kmallocing. */
net/ipv4/ipvs/ip_vs_lblc.c: * Martin Hamilton : fixed the terrible locking bugs
net/ipv4/ipconfig.c: * seems to be a terrible waste of CPU time, but actually there is
net/irda/irttp.c: * because it has horrible latency. No tasklets
net/packet/af_packet.c: * of horrible races and re-entrancy so we can forget about it
net/econet/af_econet.c: * of horrible races and re-entrancy so we can forget about it
sound/oss/ad1848.c: /* Still hanging here. Something must be terribly wrong */
sound/ppc/awacs.c: /* Sorry for the horrible delays... I hope to get that improved