diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index c46f1a9..07105a8 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -184,6 +184,16 @@ static ssize_t mtd_bb_allowed_show(struct device *dev,
 }
 static DEVICE_ATTR(bb_allowed, S_IRUGO, mtd_bb_allowed_show, NULL);
 
+static ssize_t mtd_writable_show(struct device *dev,
+		struct device_attribute *attr, char *buf)
+{
+	struct mtd_info *mtd = dev_to_mtd(dev);
+
+	return snprintf(buf, PAGE_SIZE, "%d\n", !!(mtd->flags & MTD_WRITEABLE));
+
+}
+static DEVICE_ATTR(writable, S_IRUGO, mtd_writable_show, NULL);
+
 static struct attribute *mtd_attrs[] = {
 	&dev_attr_type.attr,
 	&dev_attr_flags.attr,
@@ -195,6 +205,7 @@ static struct attribute *mtd_attrs[] = {
 	&dev_attr_numeraseregions.attr,
 	&dev_attr_name.attr,
 	&dev_attr_bb_allowed.attr,
+	&dev_attr_writable.attr,
 	NULL,
 };
 
