Patches I've written for FOSS projects
This page contains links to various patches I've written for various FOSS packages. Some of them finally found their way into the package in question, others didn't make it but are here for people who want to solve similar problems. All comments welcome to email@example.com. The patches follow the same license as the package they are for. I don't write patches that often, but when I do it's normally because I've had to fight a bug or a limitation that's annoyed me. There are probably some patches not listed here that I've forgotten about.
- A patch to the Rhythmbox music player that changes the way the random algorithm to let you change the way it biases it towards playing songs you haven't heard for a while. My posts to the rhythmbox-devel list are
This version of the patch is against the Rhythmbox version in Ubuntu Jaunty Alpha release, after 0.11.99.1. [2007-2009]
- Finding cursors in X these days is not as cheap as it used to be; and apps expect it is - so this patch adds a cursor cache to Gtk; it shaves a few hundred μs off each cursor lookup - not vast, but it adds up. It also adds a new mechanism for getting blank cursors - something that's depressingly complex because of the themeing code. This threaddescribes what I did. This patch was merged into Gtk 2.25.1. This patch to vte gets it to use the new blank cursor mechanism. 
- A patch to gnome-panel that works around one case (vertical stacked monitors) of a limitation where windows get partially hidden behind panels - the bug is actually in the spec of the communications between window managers and 'struts' that don't want to get hidden, so someday that will get improved to work with Xinerama. Note this patch works with Metacity but not with compiz (which gets rather upset), and I've only coded the vertical stacked monitor with the panel at the bottom case. It's a nasty hack but it works for me. 
- Sysstat by Sebastien Godard is a Linux command line system monitor with a number of interesting features. This
patch adds a feature to the pidstat program to make it easier to machine parse; that went into Sysstat 8.1.6. I wrote that to feed a hack for xscreensaver 5.07 to render the system state in a pretty fashion; you can find more details here. 
- This patch is a Linux kernel patch that adds the address of the client that causes an svc:... unknown version to help diagnose where they came from. This thread is the original lkml post for it. This has been in Linux 2.6 for some time now as git patch 354ecbb9dd89c21708b319da8c4ffd3dd6e6811d. 
- Having got frustrated trying to debug peoples Linux boot problems I submitted this patch that prints the list of all partitions when the kernel can't mount it's root filesystem. Here is the original
post It's been in the kernel since 2.6.22. 
- Having accidentally rebooted the wrong machine more than once it struck me it would be nice for shutdown and reboot to take the machine name of the machine you wanted to reboot. This patch (against the upstart versions) requires the names when the commands are invoked from a terminal. This does require changes to some init scripts however, and the maintainers were wary about changing the semantics of such well known commands; the discussion is here. 
- CVS is a pretty solid version control system, it has one big problem though - it's really really slow at tagging on big projects. I started an unsafe patch that sped up tagging, but it hit a couple of problems - in particular permissions on the files. That patch also doesn't complete the locking needed. The thread on info-cvs discussing it is here. 
- The GNU Coreutils are an essential part of most Linux boxes but the manual pages don't have much in the way of examples, and a friend pointed out that all man pages really should have examples. So this patch adds examples to a bunch of the commands; unfornuately there are a lot of coreutils commands and I never got them all finished. There is also a restriction that man page examples have to go in via the output of --help since all the rest of the documentation is in info pages (as is the GNU way). [2005-2006].
- This linux kernel patch adds a /proc/<pid>/statfd with information on the current state of a file handle; the original lkml message is
here.  This didn't make it in, but a similar concept, /proc/self/fdinfo, was added in 2007.
- I did a couple of patches to the patch-kernel script in the Linux kernel; the latter message to lkml is here, I can't actually find the patch from 1999. [1999, 2001].
- A Linux kernel patch that panics (and hence can use reboot-on-panic) if you run out of file handles is here, it was pointed out the same thing could be done with a watchdog and so didn't go in. .
- At the end of the last millenium I was doing a bit of work on ARM Linux to support the oldest Acorn archimedes machines (for fun and to work on my emulator); I can't find the earliest patches but here are a set retrieved from The ARM Linux dev site that seem to be around 2.2.x era - the original stuff went in around 1995; I took the fd1772 code from the m68k work and modified it for the Arc. They went into the main kernel around 2.1.88 when ARM got merged, but was in the ARM only tree for a few years before that. Most got removed in mid 2.6. since it bit rotted and no one used old Arcs.
Fixes for old machines on 2.2.1,
Old machine floppy tweaks,
Old machine locking and build fixes,
Some semaphore fixes,
Old machine misc fixes,
Old machine head patch,
ARM2 patch and some floppy stuff,
comment on layout of stat strctures - in 2.5.40, A fix for a comment in the FP code - in 2.5.40, build fix for footbridge ARM platform with no video - in 2.5.8
- A few random bug fixes old kreversi on Alpha
- A fix for a gdk tooltip positioning/monitor handling bug (Gnome bug 576306); Patch against Gtk 2.16.0
- A patch for xfwm4 (4.6.2) that adds some more accelerators to the window menu; see this xfce bugzilla entry.
- A fix for a Linux kernel oops in the Radeon DRM code, against a pre-2.6.35
- A particularly nasty patch for a Linux kernel panic caused by interrupt remapping on my motherboard.See ubuntu bug 605686.
- A simple patch for the Linux kernel fixing a swapped pair of parameters spotted by the Sparse tool.
- A patch for the Ubuntu Maverick kernel fixing a missing NULL pointer check in the fbmem code. See the Ubuntu bug.
- A patch to guard a divide in the Video 4 Linux v1 compatibility code. See the Ubuntu bug.
- A patch to swap another kzalloc parameter pair back, this time in l2tp code.
- A fix for a bug in -m in cal in newer ubuntu/debian. It's a tiny patch and is a fix for Ubuntu bug 693499.
- A patch that allows KDE to mount LUKS encrypted filesystems on fixed (not-hotplugged) discs, fixing KDE bug 181847.
- A modified version of Victor Bogado da Silva Lins file:line vim script that lets you open files with vi file:line:col: and automatically go to a line and column.
- A Linux kernel patch that fixes a few issues in the udlfb driver.
- A patch for the Ubuntu datetime indicator module that was crashing when the timezone couldn't be read.
- A Linux kernel patch for a typo in dmatest.
- Gdb fix for debian for an incorrect cleanup causing a crash as root.
- xpilot crash fix that fixes internet play.
- horgrand crash fix that fixes a startup crash.
back to Dave Gilbert's Home Page