Skip to content
View znull's full-sized avatar

Block or report znull

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
znull/README.md

Hi there 👋, I'm Jason!

My name is Jason Lunz, and I'm a software and systems engineer. You can find me on LinkedIn if you'd like to get in touch.

One day I'd like to fill this profile out more, but for now I'm going to use this space to showcase some open source work I've done over the years that I'm proud of.

Linux

I've been a Linux user both personally and in my work since Debian hamm, which isn't without occasional frustrations. Sometimes those got under my skin enough that I chased them down into the kernel and came up with a patch.

Fixed Reference Counting for Packet Sockets

When I was working at a Network Intrusion Prevention System startup, I often used tcpdump to look at raw packets. Sometimes, the wrong sequence of bringing an interface up and down while using tcpdump would put it in an annoying state where the interface was in promiscuous mode whenever tcpdump wasn't attached, and not in promiscuous mode when it was. It turns out this was a refcounting bug in the kernel.

JFFS2 Filesystem Deadlock

At the startup, the systems we shipped had to be highly reliable, so they used JFFS2 for data storage. One day I upgraded the kernel and it began locking up, so I fixed it.

LVM crash on UML

User Mode Linux is a little known port of linux to its own system call interface as its "hardware" architecture. This handy, lightweight form of virtualization allowed my team to develop our system far more efficiently, back before more modern forms of virtualization (like kvm or qemu) were widely available.

Unfortunately, UML's memory layout was set up in such a way that the system would crash if LVM were initialized. This turned out to be one of those issues where the description of the fix was longer to write than the code.

Suspend-to-RAM Crash in the IDE Disk Driver

My first linux laptop crashed hard whenever I tried using suspend-to-RAM. Needless to say, having a laptop that can't sleep is pretty annoying. It took me weeks to track this down because the crash turned out to occur before the console was enabled (meaning no log output was visible on the screen), and it was in the disk driver, which prevented any debug output from being logged to disk. I had to set up UDP logging to another machine over the network to debug it.

The fix was to add a state to the IDE power management state machine to reprogram PIO timings on resume.

Protocol Buffers

I once designed a distributed stateful packet filter for VMWare that ran partially in-vmkernel. It used Google Protocol Buffers to encode the filter rulesets, and https://github.com/protobuf-c/protobuf-c to decode those rulesets. Unfortunately, there was an edge case when memory was constrained that would crash the entire host, and all the virtual machines running on it (perhaps my most expensive bug of all time 🤑).

The issue was fixed based on a patch I submitted.

Pinned Loading

  1. node-bertrpc node-bertrpc Public

    BERT-RPC client and server for node.js

    JavaScript 17 15

  2. erlectric erlectric Public

    erlang External Term Format (etf) for C#

    C# 10 5

  3. csharp-bert csharp-bert Public

    csharp-bert is a BERT de/serializer for C#

    C# 2 2

  4. ipxe ipxe Public

    Forked from ipxe/ipxe

    iPXE network bootloader. This is a mirror of the iPXE git tree at http://git.ipxe.org/ipxe.git

    C 1

  5. brubeck brubeck Public

    Forked from github/brubeck

    A Statsd-compatible metrics aggregator

    C 1 3