diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index 8fa352ac20f84328f60e7c891db8825e5b363369..102ef4a14c5fea075c40226b3914cffe61f8b2d0 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -78,6 +78,13 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
 {
 	int ret;
 
+	/* skip leds that aren't available */
+	if (!gpio_is_valid(template->gpio)) {
+		printk(KERN_INFO "Skipping unavilable LED gpio %d (%s)\n", 
+				template->gpio, template->name);
+		return;
+	}
+
 	ret = gpio_request(template->gpio, template->name);
 	if (ret < 0)
 		return ret;
@@ -114,6 +121,8 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
 
 static void delete_gpio_led(struct gpio_led_data *led)
 {
+	if (!gpio_is_valid(led->gpio))
+		return;
 	led_classdev_unregister(&led->cdev);
 	cancel_work_sync(&led->work);
 	gpio_free(led->gpio);